我有一个 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
}
}
}
我怎样才能做到这一点?请帮忙。
最佳答案
您可以使用 Notification 和 Observer。这里的文档: - https://developer.apple.com/documentation/foundation/nsnotificationcenter
简而言之:
- 当您选中一个复选框时,您会发送一个通知,然后为该单元格设置观察者
- 当您取消选中一个复选框时,您将删除该单元格的观察者
这样,每当一个单元格收到通知时,您可以管理事件并自动取消选择该单元格,然后停止监听该单元格的新事件。
关于ios - UICollectionViewCell 切换复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462724/