HStack{
ForEach($rs.newsCategoryCollection){ $category in
Toggle(category.id, isOn: $category.isSelected)
.toggleStyle(.button)
.onChange(of: category.isSelected) {value in
print("Changed")
if value{
rs.unselectOtherCategory(id: category.id)
print("Selected: \(category.id)")
viewModel.loadNews()
}else{
category.isSelected = true
print("Deselected: \(category.id)")
}
}
}
}
在这里,我试着在水平视图中切换按钮.我希望这是用来作为 Select 器,一次只 Select 一个类别.
因此,在用户 Select 任何一个类别后,应使用以下方法取消 Select 另一个类别:rs.unselectOtherCategory(id: category.id)
因此,我使用onChange通过跟踪值的变化来检测用户 Select 类别.但使用前面的方法取消 Select 所有其他类别会更改以前 Select 的类别的值,并再次调用onChange.
当我使用Else块来确保如果用户点击选定的按钮并取消 Select (这会使所有按钮取消选中)时,问题变得更加复杂,Else块可以对其进行计数并 Select 唯一选定的按钮.
我如何才能避免这种对onChange的重复调用.
我想让用户能够点击一个按钮并 Select 它,其他按钮将被取消 Select .但是,如果用户点击已经选中的按钮,该按钮将保持选中状态.