【问题标题】:UICollectionViewCell toggle checkboxesUICollectionViewCell 切换复选框
【发布时间】:2018-01-26 13:55:45
【问题描述】:

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

我怎样才能做到这一点?请帮忙。

【问题讨论】:

  • 请查看此问题的答案stackoverflow.com/questions/39888034/…
  • @Maddyヅヅ 也不起作用,其行为方式与其已经行为相同。我可以一次选择多个复选框,这是我不想要的

标签: ios swift xcode uicollectionview uicollectionviewcell


【解决方案1】:

您可以使用通知和观察者。这里的文档: - https://developer.apple.com/documentation/foundation/nsnotificationcenter

简而言之:

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

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

【讨论】:

    【解决方案2】:

    尝试使用 UserDefault 以“团队名称”为键保存数据

    将此添加到 checkButtonHandler 以放置 Bool

    UserDefaults.standard.set(teamSelected, forKey: teamName)
    

    如果你想从其他 ViewController 获取数据

    UserDefaults.standard.bool(forKey: teamName)
    

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多