首页 > 解决方案 > 防止重复使用的单元格中的按钮再次出现

问题描述

 @objc func addinterestserver(_ sender: UIButton) {

                                        sender.backgroundColor = UIColor.white
                                        sender.setTitleColor(UIColor.black, for: .normal)
                                        sender.setTitle(NSLocalizedString("Added", comment: ""), for: .normal)
                                        sender.isEnabled = false
}



override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SearchInterestsCustom

        let release = arrayOfRels[(indexPath as NSIndexPath).row]
        cell.user.text = release.title
        cell.match.text = release.count + NSLocalizedString(" people added", comment: "")
        cell.addbutton.tag = release.eventID
        cell.addbutton.addTarget(self, action: #selector(SearchInterests.addinterestserver), for: .touchUpInside)
        cell.addbutton.layer.cornerRadius = 20
        return cell
    }

用户点击按钮后,它也会影响其他单元格的按钮,显然我在滚动时多次看到相同的修改按钮。

如何避免这种情况?

标签: iosswiftuitableview

解决方案


您可以通过以下方式避免这种情况

var allSelected = [Int]()

//

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SearchInterestsCustom

   if allSelected.contains(release.eventID) {
       cell.addbutton.backgroundColor = UIColor.white
       cell.addbutton.setTitleColor(UIColor.black, for: .normal)
       cell.addbutton.setTitle(NSLocalizedString("Added", comment: ""), for: .normal)
       cell.addbutton.isEnabled = false
   }
   else {
         // set default values 


   }

 }

//

 @objc func addinterestserver(_ sender: UIButton) {

       sender.backgroundColor = UIColor.white
       sender.setTitleColor(UIColor.black, for: .normal)
       sender.setTitle(NSLocalizedString("Added", comment: ""), for: .normal)   
       sender.isEnabled = false

       allSelected.append(sender.tag) // store it here 
}

推荐阅读