我有一个UICollectionViewCell,它有一个按钮作为复选框。由于它是一个可重复使用的单元格,假设渲染的单元格数为4.现在,我想将复选框切换为:如果选中一个单元格中的复选框,那么当我尝试勾选另一个可重复使用单元格的复选框时,则检查前一个单元格图像应该自动取消选中,这样我就可以在所有单元格中只勾选一个复选框。
目前,我的代码如下:
class SelectCollectionCell: UICollectionViewCell {
@IBOutlet weak var teamName: UILabel!
@IBOutlet weak var checkButton: UIButton!
var teamSelected: Bool = false
override func awakeFromNib() {
super.awakeFromNib()
checkButton.setImage(#imageLiteral(resourceName: "checked"), for: .selected)
}
func configureCell(_ teams: UserTeamModel) {
self.teamName.text = teams.name
self.checkButton.tag = teams.id
}
@IBAction func checkButtonHandler(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
if sender.isSelected {
SelectTeamView.selectedTeamId = self.checkButton.tag
}
else {
SelectTeamView.selectedTeamId = nil
}
}
}
我怎样才能实现这一目标?请帮忙。
答案 0 :(得分:0)
您可以使用通知和观察者。这里的文档: - https://developer.apple.com/documentation/foundation/nsnotificationcenter
简而言之:
通过这种方式,每次单元格收到通知时,您都可以管理事件并自动取消选择单元格,然后停止监听该单元格的新事件。
答案 1 :(得分:-1)
尝试使用" teamname"在UserDefault中保存数据。作为关键
将此添加到checkButtonHandler以放置Bool
UserDefaults.standard.set(teamSelected, forKey: teamName)
如果您想从其他ViewControllers获取数据
UserDefaults.standard.bool(forKey: teamName)