NavigationView で行から詳細ビューSwiftUI
を作成するために使用しています (チュートリアルhttps://developer.apple.com/tutorials/swiftui/building-lists-and-navigationで行われていることと同様)。ただし、アプリでテストすると、NavgiationLink はタップされるとすぐに詳細ビューから前のビューに戻ります (詳細ビューは 1 秒間しか表示されません)。NavigationLinks
コードは次のとおりです。
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) { ... }
、ナビゲーションは期待どおりに機能しました。