tableview自定义单元格按钮单个选择/选择

时间:2019-05-17 05:37:49

标签: swift tableview

我已经编码一段时间了,我一直无法使用tableview单选/取消选择。 我有一个带有按钮的自定义单元格的表视图。如果我单击一个按钮,则底部的另一个按钮也会被选中。例如,当我单击索引为2的按钮时,另一个按钮也会被单击。

应该就像我单击一个按钮时一样,应该取消选择其他按钮。

谢谢!

enter image description here

 func QuickReview( sender: UIButton){
    if cell.EventReviewQuickeReviewBtn.isSelected == true {
    cell.EventReviewQuickeReviewBtn.layer.borderColor = UIColor.red
    cell.EventReviewQuickeReviewBtn.backgroundColor = UIColor.white
    cell.EventReviewQuickeReviewBtn.layer.borderWidth = 1
    cell.EventReviewQuickeReviewBtn.isSelected = false
    }
    else {
    cell.EventReviewQuickeReviewBtn.layer.backgroundColor = UIColor.green
    cell.EventReviewQuickeReviewBtn.setTitleColor(UIColor.white, for: .normal)
    cell.EventReviewQuickeReviewBtn.isSelected = true
    }
  }

2 个答案:

答案 0 :(得分:0)

单元格被重用。您需要确保在两种情况下都可以设置/重置完全相同的属性集。

func QuickReview( sender: UIButton){
    if cell.EventReviewQuickeReviewBtn.isSelected {
        cell.EventReviewQuickeReviewBtn.layer.borderColor = UIColor.red
        cell.EventReviewQuickeReviewBtn.backgroundColor = UIColor.white
        cell.EventReviewQuickeReviewBtn.layer.backgroundColor = UIColor.white // or whatever
        cell.EventReviewQuickeReviewBtn.layer.borderWidth = 1
        cell.EventReviewQuickeReviewBtn.setTitleColor(UIColor.red, for: .normal) // or whatever
    } else {
        cell.EventReviewQuickeReviewBtn.layer.borderColor = UIColor.black // or whatever
        cell.EventReviewQuickeReviewBtn.backgroundColor = UIColor.green // or whatever
        cell.EventReviewQuickeReviewBtn.layer.backgroundColor = UIColor.green
        cell.EventReviewQuickeReviewBtn.layer.borderWidth = 3 // or whatever
        cell.EventReviewQuickeReviewBtn.setTitleColor(UIColor.white, for: .normal)
    }

    cell.EventReviewQuickeReviewBtn.isSelected = !cell.EventReviewQuickeReviewBtn.isSelected
}

答案 1 :(得分:0)

选择任何按钮时,应该将isSelected属性标记为false

假设您有一个表格视图模型,例如

class Example{
...
var isSelected: Bool
...
}

(在ViewController中)

let list: [Example] = [example1, example2, example3]


on tap of any button deselect all then selected desire button like

list.forEach { (example) in
                example.isSelected = false
            }
list[selectedButtonIndex].isSelected = true

,然后重新加载tableView。

相关问题