代码之家  ›  专栏  ›  技术社区  ›  Utku Dalmaz

防止重复使用的单元格中的按钮再次出现

  •  0
  • Utku Dalmaz  · 技术社区  · 6 年前
     @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
        }
    

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

    如何避免这种情况?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Shehata Gamal    6 年前

    你可以通过

    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 
    }