2

次のコードは、同じビューの PatientView を 2 つの方法で表示します。

  1. シートとして
  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 のピッカーは無効になります。

シートとして提示されたPatientView

ただし、Navigationlink を介して表示されると、ピッカーは期待どおりに機能します。

ここに画像の説明を入力

なぜこれが起こっているのか誰にも分かりますか?ピッカーを作成するための解決策は、シートとして提示されたときに適切でした。

ありがとうございました

4

1 に答える 1