У меня есть представление SwiftUI, которое помещается в стек навигации (используя NavigationLink
).
Это представление является представлением на основе UIViewRepresentable
UIKit
.
Чтобы получать события делегата из моего UIKit
представления, существует класс Coordinater
(который создается в makeCoordinator()
).
Теперь я хочу отклонить мое представление SwiftUI, когда один из делегатоввызовы метода указывают на определенное условие.
Единственный известный мне способ отклонить NavigationLink
-pressed-view - через:
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
Но когда я вызываю в моей реализации aМетод делегата (т. е. внутри моего Coordinator
):
self.mySwiftUI.presentationMode.wrappedValue.dismiss()
это приводит к сбою: Thread 1: Fatal error: Reading Environment<Binding<PresentationMode>> outside View.body
.
Зная, что SwiftUI является декларативным способом создания пользовательского интерфейса, как это сделать? Я когда-нибудь получал эту функцию dismiss()
? Есть ли способ вызвать функцию при изменении переменной @State
, например?