Why is my SwiftUI List row not always updating internally

时间秒杀一切 提交于 2020-01-25 03:14:07

问题


I have a list of reminders grouped into sections by completion and date. With data coming from an ObservedObject DataStore called global. I pass a realmBinding to the cell. The cell can update this binding and it will trigger the data store to update.

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
    }
}

The cell looks something like:

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)
    }
}

When tapping on an image it toggles the reminder completion state and its position changes in the List view. The image that was tapped should changed to a filled in check when completed. This behaviour almost always happens as expected, but sometimes the checked image will get out of sync with the completed state of reminder. I've look at this for quite some time and have not made much headway. Why is the checked image not always matching the state of the data?

来源:https://stackoverflow.com/questions/59186046/why-is-my-swiftui-list-row-not-always-updating-internally

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!