SwiftUI NavigationLink 弹出

SwiftUI NavigationLink pop

我已经使用 NavigationLink 导航到一个新视图,我想以编程方式返回到我所在的位置。在 swiftUI 中还有可能吗?我知道对于模态表示我们可以使用 .isPresented 环境值但是导航怎么样?

目前这肯定是一个错误。 Apple 提供样板代码以允许 "Back" 或 'pop' 功能内置到导航视图 'DetailView' 中。我唯一的猜测是 Apple 正在解决在后端 SwiftUI 中完全实施 Combine 以实施 'push' 和 'pop' 类型操作的问题。我无法想象 SwiftUI 在没有这个功能的情况下退出测试版,而不是像 RyanAshcraft 上面所做的那样创建一个 Combine 发布者来更新状态。

是的,您现在可以使用以下代码以编程方式弹出 NavigationLink 视图:

import SwiftUI

struct MainViewer : View{
    @State var showView = false
    var body : some View {

        NavigationLink(destination:DestView(showView: self.$showView),isActive : self.$showView){
       Text("Push View")

    }
   }
}


struct DestView : View{
    @Binding var showView : Bool
    var body : some View {

        Button(action:{self.showView = false}){
            Text("Pop Screen")

    }

   }
}

您真的可以简单地创建自定义后退按钮。只有两行代码

@Environment(\.presentationMode) var presentationMode
self.presentationMode.wrappedValue.dismiss()

示例:

import SwiftUI

struct FirstView: View {
    @State var showSecondView = false
    
    var body: some View {
        NavigationLink(destination: SecondView(),isActive : self.$showSecondView){
            Text("Push to Second View")
        }
    }
}


struct SecondView : View{
    @Environment(\.presentationMode) var presentationMode

    var body : some View {    
        Button(action:{ self.presentationMode.wrappedValue.dismiss() }){
            Text("Go Back")    
        }    
    }
}