SwiftUI中如何以编程方式使用导航链接(NavigationLink)

14

如果满足特定条件,我希望在WatchOS应用程序的启动时从NavigationView中的“一级”显示视图。

我想要与我自己按下NavigationLink相同的效果,即能够返回到NavigationView,如果我选择立即显示所需的视图,则无法实现该效果。

WatchOS也不支持“navigationBarItems”,这使得无法在实际点击NavigationLink之前向后导航。

有没有一种程序化“点击”NavigationLink的方法来实现这一点?

1个回答

33

我没有使用watchOS的经验,但我曾在类似的应用程序需求中使用了导航链接的"isActive"变体

在你的初始视图中,定义一个@State var showOneLevelIn = false(或其他绑定),如果你想让视图自动导航到第二层,则将该状态变量设置为true 。导航链接的标签是EmptyView(),所以它不会在你的初始视图中显示。

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


2
仿真器似乎存在一个错误。它只能在第一次运行时正常工作。在真实设备上没有问题。 - Yannick
您可以添加.disabled(true)来关闭navigationLink的点击功能,添加.hidden()来隐藏导航箭头。 - Iaenhaall
2
【iOS,不是WatchOS】在尝试隐藏View中占据空间的NavigationLink时,我发现了这个答案。如果我把NavigationLink放在ZStack中,那么它就不会占用View上的空间。但当其他事物在NavigationLink上面有tapGesture时,NavigationLink仍然会触发。.hidden()和.disabled(true)与ZStack完美地结合起来了。感谢@laenhaall。 - dwaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接