我正在使用SwiftUI
从行创建NavigationLinks
到NavigationView中的详细视图(类似于在教程https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation中进行的操作)。但是,当我在应用程序中进行测试时,在点击后,NavgiationLink会立即从详细信息视图导航回到上一个视图(详细信息视图仅显示一秒钟)。
以下是代码:
struct ItemsView: View {
var body: some View {
NavigationView {
VStack {
List {
ForEach(Query.items) { item in
NavigationLink(destination: ItemDetail(item: item)) {
ItemRow(item: item)
}
}
}
Spacer()
}
.navigationBarTitle(Text("Items"))
}
}
}
private struct ItemRow: View {
var item: Item
var body: some View {
VStack(alignment: .leading) {
Text(item.title)
.font(.headline)
item.completionDate.map({
Text("Created \($0.shortDateTime)")
})
item.completionDate.map({
Text("Active \(Date().offsetString(from: $0)) ago")
})
}
}
}
struct ItemDetail: View {
var item: Item
var body: some View {
VStack {
Text("\(item.title)")
Text("\(String(describing: item.creationDate))")
Text("\(String(describing: item.completionDate))")
Text("\(item.complete)")
}
.navigationBarTitle(Text("Item"), displayMode: .inline)
}
}
Query
使用Realm
完成:
let realm = try! Realm()
class Query {
static let items = realm.objects(Item.self)
}
从Results<Item>
返回的realm.objects(Item.self)
对象似乎可能有问题。当我使用let items = [Item(), Item()]
对静态数据进行尝试,然后调用ForEach(items) { ... }
时,导航按预期工作。
答案 0 :(得分:0)
通过将ForEach(Query.items)
更改为ForEach(Array(Query.items))
以使数据静态来解决此问题。
答案 1 :(得分:-1)
原因是Superset[SubsetNames] <- Subset
缺少标识符。当您添加一个ForEach(Query.items, id: \.self)
或hashable
时。列表应该像魅力一样工作。