在SwiftUI中使用多个NavigationLink

6
你能在SwiftUI中使用多个NavigationLink吗?以下代码只显示第一个链接:
struct Test : View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: Text("First")) {
                Text("Visible")
            }
            NavigationLink(destination: Text("Second")) {
                Text("Invisible")
            }
            //EDIT: Also Invisible
            Text("Not rendered")
        }
    }
}

编辑:事实证明,第一个NavigationLink下的所有内容都不会显示。
3个回答

10
把你的视图放在一个 VStack 中:
struct Test : View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: Text("First")) {
                    Text("Visible")
                }

                NavigationLink(destination: Text("Second")) {
                    Text("Invisible")
                }
                //EDIT: Also Invisible
                Text("Not rendered")
            }
        }
    }
}

它只在 VStack 中,但它目前无法工作。 - Manish
我该如何将导航连接到按钮?例如:按下按钮后,它会激活其中一个导航链接。 - thejdah

2

请注意,您可以有多个NavigationLinks,但是您在此处做错了一件事。

body属性返回单个View,但是您在此处尝试返回多个视图,这会导致错误。

为解决此问题,我们将它们放入另一个View中,例如VStack或HStack,就像kontiki所给出的答案中所示。


1
看苹果的例子,它有一个干净的实现。 在这里:https://developer.apple.com/documentation/swiftui/navigationlink 如果你需要在按钮上添加导航,你只需要在按钮动作中设置一个状态变量(按钮将放置在你放置Text("xxvisible")的地方),称之为"selection"。
在苹果的代码中: ... detail: { if let color = selection { ColorDetail(color: color) } else { Text("选择一个颜色") } }
用你的"selection"替换"color",并使用else或switch/case。

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