Я использую SwiftUI с CoreData. Каждая ячейка имеет переключатель, который обновляет CoreData isComplete: Bool. Это прекрасно работает, если у меня есть более одного элемента в основных данных, если у меня есть только один элемент, я должен нажать на Toggle 3 раза, прежде чем он исчезнет или представление обновится.
CategoryCompleteToggle(passedCategory: passedCategory, isOn: $isOn)
} // End HStack
Text(catName)
} // End VStack
.padding(10)
}
}
struct CategoryCompleteToggle: View {
var passedCategory: Category
@Environment(\.managedObjectContext) var moc
@ObservedObject var catToggle = CategoryToggle()
@Binding var isOn: Bool
var body: some View {
VStack(alignment: .trailing) {
Toggle(isOn: $isOn) {
EmptyView()
}
.onAppear {
self.isOn = self.passedCategory.catCompleted
print("ONLOAD ISON VALUE: \(self.isOn)")
}
.onTapGesture {
self.catToggle.catToggleOn.toggle()
self.catToggle.catToggleOn = !self.isOn
print("IsOn Value: \(self.isOn)")
print("Passed Category Name: \(self.passedCategory.catName ?? "Unknown")")
print("Current Completed Value: \(self.passedCategory.catCompleted)")
self.passedCategory.catCompleted = !self.isOn
do {
try self.moc.save()
} catch {
print(error.localizedDescription)
}