美文网首页
点击TableView 多选 cell

点击TableView 多选 cell

作者: lalala1112389 | 来源:发表于2017-11-22 17:30 被阅读0次

    声明变量

    let cellId = "TestTableViewCell"
    let dataArray = ["111","222","333","444","555","666","777","888","999","000"]
    var selectArray = [String]()
    
    override func viewDidLoad() {
            super.viewDidLoad()
            self.tableView.register(UINib.init(nibName: cellId, bundle: Bundle.main), forCellReuseIdentifier: cellId)
        }
    
    extension ViewController: UITableViewDelegate, UITableViewDataSource {
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return dataArray.count
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            
            // 1.获取cell
            let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! TestTableViewCell
            // 2.获取数据
            let str = self.dataArray[indexPath.row]
            // 3.设置数据
            cell.titleLabel.text = str
            // 4.设置选中状态(目前采用更改背景颜色)
            var backgroundCorlor = UIColor.clear // 默认为透明
            if self.selectArray.contains(str) {
                backgroundCorlor = UIColor.blue // 如果已选择(在选中数组中)则更改背景颜色
            }
            cell.backgroundColor = backgroundCorlor  // 设置背景颜色
            
            // 5.返回cell
            return cell
        }
        
        func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
            return 120
        }
        
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            
            // 选择处理
            /// 1.获取当前点击的cell
            let cell = tableView.cellForRow(at: indexPath) as! TestTableViewCell
            /// 2.获取数据
            let str = self.dataArray[indexPath.row]
            /// 3.判断选中状态
            var backgroundCorlor = UIColor.blue
            if self.selectArray.contains(str) {
                // 已选择则移除,并更新cell背景
                if let index = self.selectArray.index(of: str) {
                  self.selectArray.remove(at: index) // 移除选中
                }
                
                backgroundCorlor = UIColor.clear // 设置透明背景
            } else { // 未选中
                self.selectArray.append(str) // 添加至数组中
            }
            
            cell.backgroundColor = backgroundCorlor // 设置背景颜色
        }
    }
    

    相关文章

      网友评论

          本文标题:点击TableView 多选 cell

          本文链接:https://www.haomeiwen.com/subject/ncdovxtx.html