我有一个提醒列表,按完成时间和日期分为几部分。数据来自名为global的ObservedObject DataStore。我将realmBinding传递给该单元格。单元可以更新此绑定,它将触发数据存储更新。
List {
// Past Due
if self.global.pastDueReminders.count > 0 {
Section(header: SectionHeader {}){
ForEach(self.global.pastDueReminders) { reminder in
NavigationLink(destination: ReminderDetail( reminder: reminder.realmBinding())) {
GeneralReminderCell(reminder: reminder.realmBinding())
}
}
}
}
// Completed
if self.global.completeReminders.count > 0 {
// Same as PastDue but for Completed
}
}
该单元格类似于:
struct GeneralReminderCell: View {
@Binding var reminder:Reminder
var body: some View {
HStack(alignment:.top, spacing: 10) {
Image(systemName: reminder.completed ? "checkmark.circle.fill" : "circle")
.onTapGesture(perform:{ self.reminder.completed = !self.reminder.completed })
VStack(alignment: .leading, spacing: 2) {
Text("Follow up with \(reminder.client.fullName)").fontWeight(.semibold)
if reminder.title.count > 0 {
Text(reminder.title)
}
Text(reminder.date.formatted()).foregroundColor(.gray)
}
}.padding(.vertical, 10)
}
}
点击图像时,它会切换提醒完成状态,并且其位置在列表视图中也会更改。完成后,被点击的图像应更改为填充检查。 此行为几乎总是按预期发生,但是有时选中的图像将与提醒的完成状态不同步。我已经看了很长时间了,并且没有取得太大进展。为什么选中的图像不总是与数据状态匹配?