我正在使用领域数据库,在获取列表数据并使用点击手势属性转到详细视图后我遇到了问题,它只显示我的领域数据库中的第一组数据。 我将展示一些图片来说明。
这就是我的清单的样子
这是单击时的详细视图,无论您单击什么,它都只显示第一组数据。
ForEach(realmManger.patterns, id: \.id) { userPattern in
patternCell(title: userPattern.title ?? "Error??", date: userPattern.dateCreated ?? Date.now)
.onTapGesture {
editPattern = true
}.sheet(isPresented: $editPattern) {
patternEdit(userPattern: userPattern)
.environmentObject(realmManger)
}
}
代码太长我试图展示什么是重要的
struct patternEdit: View {
@EnvironmentObject var realmManger:RealmManger
@State var showAlert = false
let userPattern:Patterns
var body: some View {
Text(userPattern.title ?? "Error")
.font(.title)
.foregroundColor(Color("lightBlue"))
.padding()
}
这是详细视图的代码,为什么它只显示第一个数据?
将
.sheet()
从ForEach
循环中取出并使用.sheet(item: ...)
,
就像在这个示例代码中使用 @State var selectedPattern: ...
@State var selectedPattern: Patterns? // <-- here
// ...
var body: some View {
// ...
ForEach(realmManger.patterns, id: \.id) { userPattern in
patternCell(title: userPattern.title ?? "Error??", date: userPattern.dateCreated ?? Date.now)
.onTapGesture {
selectedPattern = userPattern // <-- here
}
}
.sheet(item: $selectedPattern) { userPattern in // <-- here
patternEdit(userPattern: userPattern)
.environmentObject(realmManger)
}
// ...
}
根据您的目的调整示例代码。