Swiftui 从一个列表到第二个列表

Swiftui 从一个列表到第二个列表,swiftui,Swiftui,从第一个列表视图中,用户选择一行。然后出现第二个列表视图,用户再次选择一行,然后我们进入详细视图(参见屏幕转储)。有几件事我不明白 为什么“潘塔纳尔”图像在所有三个视图上都重复 在细节视图中,我有两个“后退按钮”。我只想要一个 课程顺便问一下,为什么一个按钮被称为“后退”而不是 "发展"? 为什么列表视图2中的图像和 名单 第一个列表视图的我的代码: struct EggList: View { var eggs = Egg.all() var body: some View {

从第一个列表视图中,用户选择一行。然后出现第二个列表视图,用户再次选择一行,然后我们进入详细视图(参见屏幕转储)。有几件事我不明白

  • 为什么“潘塔纳尔”图像在所有三个视图上都重复
  • 在细节视图中,我有两个“后退按钮”。我只想要一个 课程顺便问一下,为什么一个按钮被称为“后退”而不是 "发展"?
  • 为什么列表视图2中的图像和 名单
  • 第一个列表视图的我的代码:

    struct EggList: View {
        var eggs = Egg.all()
        var body: some View {
            VStack{
               Image("Pantanal")
                    .resizable()
                    .scaledToFill()
                    .clipped()
                    .listRowInsets(EdgeInsets())
                    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 250)
                    .edgesIgnoringSafeArea(.all)
                    .aspectRatio(contentMode: .fit)
    
                NavigationView {
                    List(eggs) { egg in
                        NavigationLink(destination: EggDayList(egg: egg)) {
                            CellRow(egg: egg)
                        }
                    }
                    .navigationBarTitle(Text("Egg overview"), displayMode: .inline)
                }
            }
        }
    }
    
    struct EggDayList: View {
        var egg = Egg.all().first
        var body: some View {
            NavigationView {
                List(egg!.calcWeights) { eggDay in
                    NavigationLink(destination: EggDetail()) {
                        CellDayRow(eggDay: eggDay)
                    }
                }
            }.navigationBarTitle("Development")
        }
    }
    
    第二个列表视图的我的代码:

    struct EggList: View {
        var eggs = Egg.all()
        var body: some View {
            VStack{
               Image("Pantanal")
                    .resizable()
                    .scaledToFill()
                    .clipped()
                    .listRowInsets(EdgeInsets())
                    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 250)
                    .edgesIgnoringSafeArea(.all)
                    .aspectRatio(contentMode: .fit)
    
                NavigationView {
                    List(eggs) { egg in
                        NavigationLink(destination: EggDayList(egg: egg)) {
                            CellRow(egg: egg)
                        }
                    }
                    .navigationBarTitle(Text("Egg overview"), displayMode: .inline)
                }
            }
        }
    }
    
    struct EggDayList: View {
        var egg = Egg.all().first
        var body: some View {
            NavigationView {
                List(egg!.calcWeights) { eggDay in
                    NavigationLink(destination: EggDetail()) {
                        CellDayRow(eggDay: eggDay)
                    }
                }
            }.navigationBarTitle("Development")
        }
    }
    

    1:您定义了多个导航。但第一个会在每一页上重复。因此,您将在每页上看到标题。如果您不喜欢此行为,请将图像移动到
    NavigationView

    2.1:因为您设置了两个导航,所以去掉第二个导航,您将只看到一个后退按钮

    2.2:因为
    navigationBarTitle
    应该在内部
    NavigationView
    。比如:

    NavigationView {
       Text("test").navigationBarTitle("This navigation title will be used for next back button")
    }
    
    3:由于有多个
    NavigationView
    s,每次转到下一页时,列表上方初始化的新
    NavigationView
    看起来都是空白


    注意
    导航视图
    类似于
    UINavigationController
    。因此,每次构建一个控制器时,就像构建一个新控制器。但是只需要一个控制器。

    1:您定义了多个导航。但第一个会在每一页上重复。因此,您将在每页上看到标题。如果您不喜欢此行为,请将图像移动到
    NavigationView

    2.1:因为您设置了两个导航,所以去掉第二个导航,您将只看到一个后退按钮

    2.2:因为
    navigationBarTitle
    应该在内部
    NavigationView
    。比如:

    NavigationView {
       Text("test").navigationBarTitle("This navigation title will be used for next back button")
    }
    
    3:由于有多个
    NavigationView
    s,每次转到下一页时,列表上方初始化的新
    NavigationView
    看起来都是空白

    注意
    导航视图
    类似于
    UINavigationController
    。因此,每次构建一个控制器时,就像构建一个新控制器。但只需要一个控制器