选择所有单元格的Swift 3.0多选

Jay*_*ngh 6 iphone uitableview ios swift3

我在表视图中添加了数据,并且我已经在第一个位置手动添加了"全选"选项,现在当用户选择第一个选项"全部选择"时,则手动选择"全部选择"选项未选中.选择全部,点击然后工作所有人或取消选择工作但信号选择所有不工作的人"全选"我尝试了下面的代码,但它不工作所以任何人都可以帮我解决这个问题?

在此输入图像描述

var unchecked:Bool = true
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            // create a new cell if needed or reuse an old one
            let cell = ObjTableview.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SelectUserCell
            // set the text from the data model
             cell.selectionStyle = UITableViewCellSelectionStyle.none
            cell.lblStudentName.text = getStudentName[indexPath.row]

            if UnAll == "unselect" {
                if indexPath.row == 0 {
                    cell.btnCheckbox.setImage(UIImage(named: "unSelectedItem"), for: .normal)

                }
                if indexPath.row == Int(selectedNumber) {
                    cell.btnCheckbox.setImage(UIImage(named: "unSelectedItem"), for: .normal)

                }
                if indexPath.row == Int(unSelectNumber) {
                    //var j = "\(i)"

                    cell.btnCheckbox.setImage(UIImage(named: "selectedItem"), for: .normal)

                }

            }else
            {
            if(unchecked){

                cell.btnCheckbox.setImage(UIImage(named: "unSelectedItem"), for: .normal)

            }
            else{

                cell.btnCheckbox.setImage(UIImage(named: "selectedItem"), for: .normal)

              }
            }

            return cell
        }
        var UnAll = ""
        var selectedNumber = ""
        var unSelectNumber = ""
        var checkselect:Bool = true

        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

            UnAll.removeAll()
            selectedNumber.removeAll()
            unSelectNumber.removeAll()
            if(indexPath.row == 0){

                btnCheckBoxClick(sender: UIButton())

            }else
            {
            UnAll = "unselect"
                btnCheckBoxClick(sender: UIButton())
                if checkselect {
                    selectedNumber = "\(indexPath.row)"
                    checkselect = false
                }else
                {
                  unSelectNumber = "\(indexPath.row)"
                    checkselect = true
                }

                print("the selected index is : \(indexPath.row)")
            }

        }

        @IBAction func btnCheckBoxClick(_ sender: Any) {   

            if(unchecked){

                unchecked = false
            }
            else{              
                unchecked = true
            }
            ObjTableview.reloadData()
         }
Run Code Online (Sandbox Code Playgroud)

Raj*_*r R 9

使用Bool属性为模型数据创建结构.您可以通过单元格选择来修改此属性.

模拟器

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

  var allCharacters:[Character] = []

  override func viewDidLoad() {
    super.viewDidLoad()
        allCharacters = [Character(name: "All"),Character(name: "Luke Skywalker"),Character(name: "Leia Organa"),Character(name: "Advik Shah"),Character(name: "Aarav Modi")]

  }
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return allCharacters.count
  }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
    if cell == nil{
      cell = UITableViewCell(style: .subtitle, reuseIdentifier: "Cell")
    }
      cell?.textLabel?.text = allCharacters[indexPath.row].name
      if allCharacters[indexPath.row].isSelected
      {
        cell?.accessoryType = .checkmark
      }
      else
      {
        cell?.accessoryType = .none
      }
      cell?.selectionStyle = .none
    return cell!
  }
  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.row == 0
    {
      allCharacters[indexPath.row].isSelected = !allCharacters[indexPath.row].isSelected
      for index in allCharacters.indices
      {
        allCharacters[index].isSelected = allCharacters[indexPath.row].isSelected
      }
    }
    else
    {
      allCharacters[indexPath.row].isSelected = !allCharacters[indexPath.row].isSelected
      if allCharacters.dropFirst().filter({ $0.isSelected }).count == allCharacters.dropFirst().count
      {
        allCharacters[0].isSelected = true
      }
      else
      {
        allCharacters[0].isSelected = false
      }
    }
    tableView.reloadData()
  }




}

struct Character
{
  var name:String
  //  var otherDetails
  var isSelected:Bool! = false
  init(name:String) {
    self.name = name
  }
}
Run Code Online (Sandbox Code Playgroud)

从字典数组创建Struct对象数组

let SubjectArray = json["students"] as! [[String:Any]]
allCharacters = SubjectArray.map({ Character(name: $0["studentName"] as! String) })
allCharacters.insert(Character(name:"All"), at: 0)
Run Code Online (Sandbox Code Playgroud)