【问题标题】:How to pass data between SwiftUI views using NavigationLink如何使用 NavigationLink 在 SwiftUI 视图之间传递数据
【发布时间】:2021-12-25 20:22:23
【问题描述】:

我正在参与一个小型 SwiftUI 练习,以了解如何使用 NavigationLink 在视图之间传递数据。在点击 ContentView NavigationLink 后,我将 ContentView 设置为向 SecondView 发送消息。点击 SecondView 中的 NavigationLink,然后将消息发送到 ThirdView。但是,当我到达 ThirdView 时,我注意到一个奇怪的 UI 出现。请看下面的截图:

知道为什么会出现此 NavigationView 问题吗?它与在所有 3 个视图中都有 NavigationView 有关吗?

这是我的代码:

内容视图

struct ContentView: View {
    var body: some View {
        
        NavigationView {
            NavigationLink(destination: SecondView(message: "Hello from ContentView")) {
                Text("Go to Second View")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

第二视图

struct SecondView: View {
    var message: String
    
    var body: some View {
        Text("\(message)")
        
        NavigationView {
            NavigationLink(destination: ThirdView(message: self.message)) {
                Text("Go to Third View")
            }
        }
    }
}

struct SecondView_Previews: PreviewProvider {
    static var previews: some View {
        SecondView(message: String())
    }
}

第三视图

struct ThirdView: View {
    var message: String
    
    var body: some View {
        NavigationView {
            Text("\(message)")
        }
    }
}

struct ThirdView_Previews: PreviewProvider {
    static var previews: some View {
        ThirdView(message: String())
    }
}

非常感谢您的反馈。谢谢!

【问题讨论】:

  • "这是否与在所有 3 个视图中使用 NavigationView 有关?"是的。您的层次结构中应该只有 一个 NavigationView(在最顶层的父视图中)
  • 这能回答你的问题吗? SwiftUI NavigationView layout issues

标签: swift swiftui swiftui-list swiftui-navigationlink swiftui-navigationview


【解决方案1】:

移除第二个导航视图

struct SecondView: View {
    var message: String
    var body: some View {
        VStack(spacing: 100 ) {
            Text("\(message)")
            NavigationLink(destination: ThirdView(message: self.message)) {
                Text("Go to Third View")
            }
        }    
    }
}




struct ThirdView: View {
    var message: String
    
    var body: some View {

            Text("\(message)")
        }
    
}
    


【讨论】:

    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    相关资源
    最近更新 更多