我已经用NavigationLink导航到了一个新的视图,我想从编程上回到我所在的位置。这在swiftUI中是可能的吗?我知道对于模态表示,我们可以使用.isPresented环境值,但是导航呢?
发布于 2020-07-13 00:19:51
你真的可以简单地创建自定义的后退按钮。只需两行代码即可实现?
@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")
}
}
}发布于 2019-11-01 15:17:29
是的,您现在可以使用以下代码以编程方式弹出一个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")
}
}
}发布于 2019-07-16 00:36:24
目前这肯定是个bug。Apple提供了样板代码,允许将“后退”或“弹出”功能内置到导航视图“DetailView”中。我唯一的猜测是,苹果正在解决后端在SwiftUI中完全实现Combine的问题,以实现“推”和“弹”类型的操作。我无法想象在没有这个功能的情况下,SwiftUI会比创建一个类似于RyanAshcraft上面所做的更新状态的组合发布器更容易访问。
https://stackoverflow.com/questions/57036645
复制相似问题