ios - UICollectionViewCell 切换复选框

标签 ios swift xcode uicollectionview uicollectionviewcell

我有一个 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

简而言之:

  1. 当您选中一个复选框时,您会发送一个通知,然后为该单元格设置观察者
  2. 当您取消选中一个复选框时,您将删除该单元格的观察者

这样,每当一个单元格收到通知时,您可以管理事件并自动取消选择该单元格,然后停止监听该单元格的新事件。

关于ios - UICollectionViewCell 切换复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462724/

相关文章:

ios - Xcode 8 beta 6 中的模糊错误

ios - 当我点击 Pin 图时,没有得到正确的数据。解决方案?

ios - 关闭 View Controller 时出错

ios - Swift 返回错误 'Binary operator == cannot be applied to two EKSourceType operands'

ios - 如何退出导航 Controller ?

ios - NSSet 中的第一个实体具有较短的 ID,并且不保留值更改

iphone - 从 Xcode 4.6.2 部署到 iOS 7(测试版)设备

ios - 无法创建配置文件

ios - Facebook API Objective-C 到 Swift

arrays - 数组到字典(无循环)