Я пытаюсь закрыть Модал изнутри Модала. Уловка в том, что я хочу открыть модал от NavigationBarItem
. Я предоставил некоторый демонстрационный код и случаи, когда он работает, а где нет:
Дело 01
1. Openning from NavigationBarItem
2. Closing by pressing Button in Modal
3. Openning again from Button -> WORKS
Дело 02
1. Openning from NavigationBarItem
2. Closing by swiping down
3. Openning again from NavigationBarItem -> WORKS
Случай 03
1. Openning from Button
2. Closing from Button
3. Openning again from NavigationBarItem -> DOESNT WORK
-> Проблема заключается в том, что при закрытии нажатием кнопки модальное окно закрывается, но все еще помечается как активное вфон. При последующем нажатии кнопки NavigationBarButton я получаю эту ошибку в консоли:
Warning: Attempt to present <_TtGC7SwiftUIP13$7fff2c684d1c22SheetHostingControllerVS_7AnyView_: 0x7f9a6c52b3c0> on <UINavigationController: 0x7f9a6d85c200> which is already presenting (null)
, вот код:
struct TestView: View {
@State var showModal: Bool = false
var body: some View {
NavigationView {
Button(action: {
self.showModal.toggle()
}) {
Text("Show Modal")
}.sheet(isPresented: $showModal) {
ModalView()
}
.navigationBarItems(trailing:
Button(action: {
self.showModal.toggle()
}) {
Text("Show Modal")
}.sheet(isPresented: $showModal) {
ModalView()
}
)
}
}
}
struct ModalView: View {
@Environment(\.presentationMode) var presentationMode
func dismiss() {
self.presentationMode.wrappedValue.dismiss()
}
var body: some View {
Button(action: {
self.dismiss()
}) {
Text("Save").bold()
}
}
}