Как открыть представление SwiftUI NavigationLink для измененного условия (получено от делегата)? - PullRequest
1 голос
/ 04 октября 2019

У меня есть представление 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, например?

...