我有点困惑。我有一些复杂的功能。有几行带有复选框。当您点击行时,ViewModel决定要选择哪些行和取消选择哪些行。我为CheckBox创建了一个自定义绑定,所以它应该根据ViewModel内部的更改来更改状态。我尝试使用.update()
方法更新绑定。然而,它什么也没做。未调用绑定的get。
这是我的代码:
let lineIndex = $0 + viewModel.getSectionFirstLineIndex(sectionIndex: sectionIndex)
let line = viewModel.getLine(index: lineIndex)
var checkBoxBinding = Binding<Bool>(
get: {
viewModel.isLineSelected(lineIndex: lineIndex)
}, set: { _ in
fatalError("Not supported")
}
)
HStack {
CheckBox(isSelected: checkBoxBinding)
Text(line)
}.padding(16).onTapGesture {
viewModel.didTapOnLine(lineIndex: lineIndex)
checkBoxBinding.update()
}
您可以使用.onChange(viewModel.$isLineSelected(侦听hstack上的更改,然后在闭包中更改checkBoxBinding的值。