收集视图上的Swift 3:按钮

时间:2017-01-16 17:33:05

标签: swift button uicollectionview swift3 uicollectionviewcell

我在UICollectionView的原型单元格中添加了一个按钮,我想更新单元格标签中显示的属性:

There's a button over the 28 and I want when taped add 1 to this integer

非常感谢

编辑: 可能需要创建一个也获得indexPath.row但不知道如何做的函数。

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    //let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)
    //var cell :CounterCollectionViewCell!
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CounterCollectionViewCell

    // Configure the cell
    let myColor :UIColor = UIColor(red: 240/255, green: 179/255, blue: 28/255, alpha: 1.0)
    let presentCounter = counters[indexPath.row]
    cell.nameLabel.text = presentCounter.nameCD
    cell.valueLabel.text = String(presentCounter.valueCD)
    cell.backgroundColor = myColor
    cell.layer.cornerRadius=10

    return cell
}

@IBAction func masterCellAction() {

}

3 个答案:

答案 0 :(得分:1)

on cellForItem将操作作为选择器添加到您添加到自定义单元格中的自定义按钮

cell?.customButton.addTarget(self,action:#selector(masterCellAction),for:.touchUpInside)

编辑:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
 cell.masterButton.addTarget(self,action: #selector(masterAction(_:)),for: .touchUpInside) 
return cell 
} 
func masterAction(_ sender: UIButton) 
{ 
    let indexPath = collectionView?.indexPath(for: ((sender.superview?.superview) as! CounterCollectionViewCell))

let presentCounter = counters[indexPath.row] presentCounter.valueCD = presentCounter.valueCD + 1 
}

答案 1 :(得分:0)

我认为你应该有两个这样的解决方案:

  1. 创建自己的单元格课程。这意味着该按钮将处理点击事件本身。通过这种方式,您需要创建一个新的UICollectionViewCell子类。
  2. 假设当用户选择单元格(我的意思是用户可以点击单元格中的任何位置)时,您只需要实现didSelectAtCell函数,通过indexPath处理单元格。
  3. 希望它有所帮助。

答案 2 :(得分:0)

您可以创建一个继承UIButton的自定义类(例如CustomButton)并添加NSIndexPath类型的属性indexPath。然后,制作所有类型为CustomButton的按钮,您就可以轻松知道要更新的单元格。