if let subLists = todoItem.sub?.allObjects as? [ToDoSubModel] { ForEach(subLists) { item in Divider() HStack { Image(systemName:item.isChecked ? "checkmark.circle.fill":"circle") .foregroundColor(item.isChecked ? settingsVM.ThemeColors[settingsVM.themeColorNum].color : Color(uiColor: .secondaryLabel)) .onTapGesture { hapticImpact.impactOccurred() item.isChecked.toggle() } Text(item.subTitle ?? "") } } }如何将todoItem.sub的isChecked的值反转
时间: 2023-12-14 13:40:19 浏览: 366
你可以尝试使用 `enumerate()` 方法来获取元素的索引,然后通过索引来修改对应元素的属性值。具体实现可以参考下面的代码:
```swift
if let subLists = todoItem.sub?.allObjects as? [ToDoSubModel] {
ForEach(subLists.indices, id: \.self) { index in
let item = subLists[index]
Divider()
HStack {
Image(systemName: item.isChecked ? "checkmark.circle.fill" : "circle")
.foregroundColor(item.isChecked ? settingsVM.ThemeColors[settingsVM.themeColorNum].color : Color(uiColor: .secondaryLabel))
.onTapGesture {
hapticImpact.impactOccurred()
subLists[index].isChecked.toggle() // 反转 isChecked 值
}
Text(item.subTitle ?? "")
}
}
}
```
这样,在用户点击 `Image` 视图时,就会将对应的 `isChecked` 值反转。注意,由于 `subLists` 是一个常量数组,我们无法直接修改其元素的属性值,因此需要使用索引来修改原始数据源中的元素。
阅读全文