我在 SwiftUI 中有以下内容View
需要显示FamilyActivityPicker
:
import SwiftUI
import FamilyControls
struct FamilyActivityPickerView: View {
@State private var selectionToDiscourage = FamilyActivitySelection()
@Environment(\.dismiss) private var dismiss
var body: some View {
FamilyActivityPicker(headerText: "Select Apps to Restrict", selection: $selectionToDiscourage).navigationBarItems(leading: Button("Cancel") {
print("Cancel!")
dismiss()
}, trailing: Button("Done") {
print("Done!")
dismiss()
}).ignoresSafeArea().onChange(of: selectionToDiscourage) { newSelection in
let applications = selectionToDiscourage.applications
let categories = selectionToDiscourage.categories
let webDomains = selectionToDiscourage.webDomains
print("applications: \(applications), categories: \(categories), webDomains: \(webDomains)")
}
}
}
但是,navigationBarItems 的前导按钮和尾随按钮均未显示:
我做错了什么?我们应该如何取消或完成 FamilyActivityPicker 视图?
编辑:
当我使用NavigationStack
with时.toolbar
,我最终得到了 2 个导航栏,如下面的屏幕截图所示,看起来非常丑陋并且浪费空间:
import SwiftUI
import FamilyControls
struct FamilyActivityPickerView: View {
@State private var selectionToDiscourage = FamilyActivitySelection()
@Environment(\.dismiss) private var dismiss
var body: some View {
NavigationStack {
FamilyActivityPicker(selection: $selectionToDiscourage).ignoresSafeArea().onChange(of: selectionToDiscourage) { newSelection in
let applications = selectionToDiscourage.applications
let categories = selectionToDiscourage.categories
let webDomains = selectionToDiscourage.webDomains
print("applications: \(applications), categories: \(categories), webDomains: \(webDomains)")
}.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button("Cancel") {
print("Cancel!")
dismiss()
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button("Done") {
print("Done!")
dismiss()
}
}
}
}
}
}
结果:
您正在寻找的是“familyActivityPicker”而不是“FamilyActivityPicker”
您不能修改 的导航按钮
FamilyActivityPicker
。看起来您正在
FamilyActivityPickerView
用来展示您的sheet
。如果是这种情况,您应该使用修饰符,而不是视图。用此修饰符替换修饰符。.familyActivityPicker
FamilyActivityPicker
.sheet
改变
到
SwiftUI 会
FamilyActivityPicker
在工作表中显示一个,并且会自动添加“完成”和“取消”按钮。