我已使用NavigationLink
导航到一个新视图,我想回到编程位置。 swiftUI还可以吗?我知道对于模式演示,我们可以使用.isPresented
环境值,但是导航又如何呢?
答案 0 :(得分:3)
您真的可以简单地创建自定义后退按钮。只有两行代码?
@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")
}
}
}
答案 1 :(得分:2)
是的,您现在可以使用以下代码以编程方式弹出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")
}
}
}
答案 2 :(得分:0)
当前必须是一个错误。 Apple提供了样板代码,以允许在导航视图“ DetailView”中内置“后退”或“弹出”功能。我唯一的猜测是,苹果公司正在努力在后端的SwiftUI中完全实现Combine,以实现“推送”和“ pop”类型的动作。我无法想象,如果没有此功能,SwiftUI会比Beta版更容易访问,而不是创建一个Combine发行商来更新类似于RyanAshcraft所做的状态。