在SwiftUI中以编程方式使用NavigationLink

hei*_*ter 1 apple-watch watchos swiftui navigationlink

我正在寻找一种在满足某些条件的情况下在应用启动时从NavigationView在WatchOS应用程序中“以一个级别”显示视图的方法。

我希望获得与我自己按下NavigationLink相同的效果,即能够再次返回NavigationView,如果我选择立即显示所需的视图,则无法实现。

WatchOS也无法使用“ navigationBarItems”,这使得如果不首先单击NavigationLink就无法向后导航。

是否可以通过编程方式“单击” NavigationLink来实现此目的?

小智 5

我没有watchOS的经验,但是我已经使用NavigationLink 的“ isActive”变体来满足类似的应用程序需求。

在初始视图中,定义一个@State var showOneLevelIn = false(或其他绑定),如果您希望视图自动导航到第二级,则将该状态var设置为true。NavigationLink的标签为EmptyView(),因此在初始视图中将不可见。

NavigationLink(destination: OneLevelInView(), isActive: $showOneLevelIn, label: { EmptyView() })

  • 模拟器好像有bug。它仅在第一次有效。在真实设备上它可以正常工作。 (2认同)
  • [iOS,而不是 WatchOS] 我在尝试隐藏占用视图空间的 NavigationLink 时找到了这个答案。如果我将 NavigationLink 放在 ZStack 中,这样它就不会占用视图上的空间,当 NavigationLink 顶部的其他东西有 tapGesture 时,NavigationLink 就会触发。.hidden() 和 .disabled(true) 与 ZStack 完美结合。谢谢@laenhaall (2认同)