如何以编程方式从SwiftUI导航堆栈中弹出UIViewControllerRepresentable

问题描述 投票:0回答:1

这是我的SwiftUI设置:

我有一个SwiftUI视图(称为MapSearchView),该视图的NavigationView包含一个NavigationLink。

    var body: some View {
    VStack {
        NavigationView {
            Form {
                Section (header: Text("Location")){
                    NavigationLink (locationString, destination: GooglePlacesViewController(mapTools: $mapTools))
                }...

NavigationLink的目标是包装GooglePlacesViewController的UIViewControllerRepresentable。当我完成GooglePlaces搜索后(因为我做了选择或取消了搜索),我想以编程方式弹出回到MapSearchView。

我已经尝试在UIViewControllerRepresentable(GooglePlacesViewController)中添加以下内容:

    @Environment(\.presentationMode) var presentationMode

var popToPrevious : Bool = false {
    didSet {
        if popToPrevious == true {
            self.presentationMode.wrappedValue.dismiss()
        }
    }
}

并且使用以下方法在我的协调器中将popToPrevious设置为true:>

parent.popToPrevious = true

它确实被调用,但是什么也不做。

我也曾尝试在协调器中致电

view.viewController().navigationController.popViewController(animated: true)

(viewController()是获取任何视图的viewController的扩展)

这也无济于事。

想法?

这是我的SwiftUI设置:我有一个SwiftUI视图(称为MapSearchView),该视图具有包含NavigationLink的NavigationView。 var body:some View {VStack {NavigationView {...

swift swiftui navigationview navigationlink uiviewcontrollerrepresentable
1个回答
0
投票

如果您创建拥有者视图的协调器(即您的代表人,那么请在需要时尝试直接致电]

© www.soinside.com 2019 - 2024. All rights reserved.