次のコードは、同じビューの PatientView を 2 つの方法で表示します。
- シートとして
- ナビゲーションリンク
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]
})
}
}
シートとして表示される場合、PatientView のピッカーは無効になります。
ただし、Navigationlink を介して表示されると、ピッカーは期待どおりに機能します。
なぜこれが起こっているのか誰にも分かりますか?ピッカーを作成するための解決策は、シートとして提示されたときに適切でした。
ありがとうございました