【问题标题】:Call a NavigationLink programmatically?以编程方式调用 NavigationLink?
【发布时间】:2019-10-19 11:36:45
【问题描述】:
是否可以通过编程方式调用导航链接?
这是可能的,但现在已弃用。
var link1 = NavigationLink("Link Text", destination: MyView1())
var link1 = NavigationLink("Link Text", destination: MyView2())
//Something like this
Button(action: {
if (option == 1){
self.link1.presented?.value = true
}
else{
self.link2.presented?.value = true
}
}
【问题讨论】:
标签:
swiftui
navigationlink
【解决方案1】:
我不知道如何帮助调用导航链接,但也许我知道如何做你想做的事..
请记住,在 SwiftUI 中我们使用结构,它们是 static。因此,您不能在代码运行时将self.link1.presented?.value 设置为true。
为此,您可以先将此 var 更改为 @State var,这意味着 SwiftUI 将使此 var 动态化。考虑到这一点,您可以处理要显示的视图,只需保存标记的选项。
我修改了你的代码来显示这个:
//begining of your struct
@State var selectedOption = 1
//something changed the selectedOption
self.selectedOption = 2
//Here your NavigationLink ( use it without button)
NavigationLink("Link Text", destination: selectedOption == 1 ? View1 : View2)
希望对你有帮助!