Xcode 12 Beta 3 中的 SwiftUI - 将视图呈现为 Sheet 时禁用选择器
SwiftUI in Xcode 12 Beta 3 - Picker is disabled when presenting a view as a Sheet
以下代码以两种方式呈现相同的视图 PatientView:
- 作为 Sheet
- 导航链接
var body: some View {
NavigationView {
List {
ForEach(patients, id: \.self) { patient in
NavigationLink(destination:
PatientView(selectedPatient: patient, isDependant: false, mainID: "")) {
PatientRowView(patient: patient)
}
}
.onDelete { indexSet in
for index in indexSet {
self.moc.delete(self.patients[index])
}
}
}
.navigationBarItems(trailing: Button(action: {
self.showingAddScreen.toggle()
}) {
Image(systemName: "plus")
})
.sheet(isPresented: $showingAddScreen) {
PatientView(selectedPatient: nil, isDependant: false, mainID: "").environment(\.managedObjectContext, self.moc)
}
.navigationBarTitle("Patients")
.background(NavigationConfigurator { nc in
nc.navigationBar.barTintColor = .launchpadBackgroundGray
nc.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.black]
})
}
}
当显示为 Sheet 时,PatientView 上的选择器被禁用:
但是当通过导航链接呈现时,选择器按预期工作:
有人知道为什么会这样吗?任何使选择器正确呈现为 Sheet 的解决方案将不胜感激。
谢谢
Form
选择器需要 NavigationView
所以明确地为 sheet 工作流程提供它
.sheet(isPresented: $showingAddScreen) {
NavigationView {
PatientView(selectedPatient: nil, isDependant: false,
mainID: "").environment(\.managedObjectContext, self.moc)
}
}
以下代码以两种方式呈现相同的视图 PatientView:
- 作为 Sheet
- 导航链接
var body: some View {
NavigationView {
List {
ForEach(patients, id: \.self) { patient in
NavigationLink(destination:
PatientView(selectedPatient: patient, isDependant: false, mainID: "")) {
PatientRowView(patient: patient)
}
}
.onDelete { indexSet in
for index in indexSet {
self.moc.delete(self.patients[index])
}
}
}
.navigationBarItems(trailing: Button(action: {
self.showingAddScreen.toggle()
}) {
Image(systemName: "plus")
})
.sheet(isPresented: $showingAddScreen) {
PatientView(selectedPatient: nil, isDependant: false, mainID: "").environment(\.managedObjectContext, self.moc)
}
.navigationBarTitle("Patients")
.background(NavigationConfigurator { nc in
nc.navigationBar.barTintColor = .launchpadBackgroundGray
nc.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.black]
})
}
}
当显示为 Sheet 时,PatientView 上的选择器被禁用:
但是当通过导航链接呈现时,选择器按预期工作:
有人知道为什么会这样吗?任何使选择器正确呈现为 Sheet 的解决方案将不胜感激。
谢谢
Form
选择器需要 NavigationView
所以明确地为 sheet 工作流程提供它
.sheet(isPresented: $showingAddScreen) {
NavigationView {
PatientView(selectedPatient: nil, isDependant: false,
mainID: "").environment(\.managedObjectContext, self.moc)
}
}