用户从第一个列表视图中选择一行。然后出现第二个列表视图,用户再次选择一行,然后进入详细信息视图(请参阅屏幕转储)。有几件事我不明白。
我的第一个列表视图的代码:
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")
}
}
答案 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
。因此,每次构建一个控制器时,就像在构建一个新的控制器一样。但是只需要一个控制器。