SwiftUI NavigationLink 弹出
Posted
技术标签:
【中文标题】SwiftUI NavigationLink 弹出【英文标题】:SwiftUI NavigationLink pop 【发布时间】:2019-11-23 23:21:37 【问题描述】:我已使用NavigationLink
导航到一个新视图,我想以编程方式返回到我所在的位置。在swiftUI中还有可能吗?我知道对于模态演示,我们可以使用 .isPresented
环境值,但是导航呢?
【问题讨论】:
查看本教程ryanashcraft.me/swiftui-programmatic-navigation 这是一个重复的问题。请参阅我对这个问题的回答:***.com/questions/56513568/… 【参考方案1】:您真的可以简单地创建自定义后退按钮。只有两行代码?
@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")
【讨论】:
【参考方案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")
【讨论】:
【参考方案3】:这一定是当前的错误。 Apple 提供样板代码以允许“返回”或“弹出”功能内置到导航视图“DetailView”中。我唯一的猜测是,Apple 正在解决在后端的 SwiftUI 中完全实现 Combine 以实现“推送”和“弹出”类型的操作的问题。我无法想象没有这个功能的 SwiftUI 会比创建一个组合发布者来更新状态更容易访问,就像上面 RyanAshcraft 所做的那样。
【讨论】:
以上是关于SwiftUI NavigationLink 弹出的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:NavigationLink 在变量更新时弹出
SwiftUI:如果在 ForEach 中使用 NavigationLink 会立即弹出
SwiftUI:在 Tabview 的 WatchOS 8.1RC 上立即弹出 NavigationLink