Swiftui 快捷方式:点击列表条目后,无法重新打印
我有一个非常简单的观点:Swiftui 快捷方式:点击列表条目后,无法重新打印,swiftui,Swiftui,我有一个非常简单的观点: import SwiftUI struct DataSceneSectionView: View { @ObservedObject var model: DataSceneSectionModel var body: some View { ForEach(Array(model.entries.enumerated()), id: \.element) { (index, entry) in N
import SwiftUI
struct DataSceneSectionView: View {
@ObservedObject var model: DataSceneSectionModel
var body: some View {
ForEach(Array(model.entries.enumerated()), id: \.element) { (index, entry) in
NavigationLink(destination: DataSceneEntryView(model: entry.model)) {
Text(entry.title)
.tag(index)
}
}
}
}
模型如下所示:
import Foundation
import SwiftUI
final class DataSceneSectionModel: ObservableObject {
@Published var entries: [DataSceneSectionEntry] = []
var dataTypeGroup: DataTypeGroup
init(dataTypeGroup: DataTypeGroup) {
self.dataTypeGroup = dataTypeGroup
self.entries = buildEntries()
}
private func buildEntries() -> [DataSceneSectionEntry] {
return DataType.allCases
.filter({
return $0.group == dataTypeGroup
})
.map({
return DataSceneSectionEntry(dataType: $0)
})
}
}
struct DataSceneSectionEntry: Identifiable, Hashable {
var id = UUID()
var dataType: DataType
var title: String { return dataType.localizedPlural }
var model: DataSceneEntryModel { return DataSceneEntryModel(dataType: dataType) }
}
现在,有一个奇怪的效果:当点击其中一个条目时,链接视图显示正确。返回并点击其他条目后,该条目的链接视图也会正确显示。但是:当点击与之前相同的条目时,它只是高亮显示,但不执行任何操作
我怀疑缺少标记
修饰符,但这并没有改变任何事情
你知道如何解决这个问题吗?这能回答你的问题吗?谢谢你的提示。我尝试过,但效果非常奇怪(点击一个条目打开子视图的次数与ForEach中元素存在的次数相同)。除此之外,我不想像在建议解决方案中那样更改默认导航。我尝试通过添加缺少的视图和模型来编译代码,但这需要大量工作。如果你发布了一个编译和演示该问题的示例,这将大大有助于获得答案。我在这里用完整的代码创建了一个要点:有趣的是,我在第二次点击菜单项时得到了这个控制台消息:>>>>2020-02-11 16:59:01.770623+0100 XYZ[32788:2101443][TableView]仅警告一次:UITableView被告知布局其可见单元格和其他内容,而不在视图层次结构中(尚未将表视图或其超级视图之一添加到窗口)。