【发布时间】:2020-06-07 17:37:12
【问题描述】:
我的导航要求如下所示:
每个详细信息屏幕都可以导航到下一个和上一个详细信息屏幕。同时,“返回”按钮应始终返回到主列表(而不是之前的详细信息屏幕)。
我正在为如何在 SwiftUI 中实现这一点而苦苦挣扎?
这是我目前所拥有的:
struct ListView: View {
@State private var currentDetailShown: Int?
@State private var listItems: [Int] = Array(repeating: 0, count: 10)
func goToNext() {
if let idx = self.currentDetailShown {
self.currentDetailShown = min(self.listItems.count - 1, idx + 1)
}
}
func goToPrev() {
if let idx = self.currentDetailShown {
self.currentDetailShown = max(0, idx - 1)
}
}
var body: some View {
List {
ForEach(0..<listItems.count) { index in
NavigationLink(destination: DetailView(goToNext: self.goToNext, goToPrev: self.goToPrev),
tag: index,
selection: self.$currentDetailShown) {
ListItem(score: listItems[index])
}
.isDetailLink(false)
.onTapGesture {
self.currentDetailShown = index
}
}
}
}
}
这段代码的情况是,从第一个详细视图开始,它会移动到下一个详细视图,然后立即跳回列表视图。
我觉得我想多了,或者遗漏了一些明显的东西......
【问题讨论】: