SwiftUI如何在子视图上导航到新的导航页面

时间:2020-11-08 01:23:28

标签: ios swift swiftui

我对SwiftUI还是很陌生,导航有些麻烦。

在下面的代码中,我具有按层次结构排列的ContentView,UserView和BobView。

内容视图显示10个用户视图,并且在用户视图内部,有一个名为“单击我导航”的文本可将我导航到鲍勃视图。

我的问题到现在为止,当我单击“单击我进行导航”时,它将导航到我想要的BobView。 但是,滚动时仍可以看到“内容视图和图像内容视图”文本以及其他9个用户。

我知道为什么这样做,但是我不太确定如何解决。我不想在内容视图上创建导航,否则它将在整个BobView()上创建导航,这不是我想要的。我只希望在用户视图中单击Text(“单击我即可导航”)时进行导航。

任何帮助将不胜感激:)

我的代码架构:

node.roles: [master, data]

1 个答案:

答案 0 :(得分:2)

struct ContentView: View {

    var body: some View {
        NavigationView {
            ScrollView(.vertical, showsIndicators: false){
                 VStack {
                     Text("Content View text")
                     Image("contentviewimage")
                     ForEach((1...10), id: \.self) { user in
                        UserView()
                     }
                 }
           }
        }
    }
}


struct UserView: View {

    var body: some View {
        
                 VStack {
                     Image("bob")
                     Text("Hello my name is bob")
                     NavigationLink(
                        destination: BobView()){
                            Text("Click me to navigate").font(.system(size: 20))
                        }
                 }
  
        }
    }

struct BobView: View{
  var body: some View{
     VStack{Text("bob view")}
   }
}



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