从一个列表到第二个列表

时间:2019-09-01 19:20:17

标签: swiftui

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

  1. 为什么在所有三个视图上都重复显示“潘塔纳尔式”图像?
  2. 在详细视图上,我有两个“后退按钮”。我只想要其中之一 课程。顺便说一句,为什么一个按钮叫做“ Back”而不是 “发展”?
  3. 为什么列表视图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")
    }
}

The first List view The second List view The detail view

1 个答案:

答案 0 :(得分:2)

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

移动图像

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

2.2:因为navigationBarTitle应该位于内部 NavigationView。喜欢:

NavigationView {
   Text("test").navigationBarTitle("This navigation title will be used for next back button")
}

3:由于有多个NavigationView,因此每次您进入下一页时,列表上方(没有标题)初始化的新NavigationView看起来像是空白。

请注意NavigationView类似于UINavigationController。因此,每次构建一个控制器时,就像在构建一个新的控制器一样。但是只需要一个控制器。