一次单击多个单元格的UItableview正在快速检查swift 3

Ham*_*ass 0 iphone xcode uitableview ios swift

我在uitableview中遇到问题每当我选择一个单元格第4个没有单元格自动被选中...我厌倦了这个问题有人请帮助这里是我的didselectrowfunc ..

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

////////////////添加复选框////////////////////////

if tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCellAccessoryType.checkmark
{
if selectedDisease.count > 0
{

let no = selectedDisease.index(of: finall[indexPath.row])
selectedDisease.remove(at: no!)
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.none
print(selectedDisease)
}
else
{
selectedDisease = [""]
}

}
else
{

if selectedDisease.contains("")
{
selectedDisease.removeAll()
var name = finall[indexPath.row]
selectedDisease.append(name)
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark
print(selectedDisease)

}
else
{
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark
selectedDisease.append(finall[indexPath.row])
//selectedDisease = [finall[indexPath.row]]
print(selectedDisease)
}

}

}
Run Code Online (Sandbox Code Playgroud)

///////// CellForRowAt ///////////////

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

        cell.DiseaseName.text = finall[indexPath.row]
        //indexsave.append(indexPath.row)

        return cell
    }
Run Code Online (Sandbox Code Playgroud)

Ani*_*mar 6

试试这个逻辑希望这会解决你的问题

    let dict = [NSIndexPath: String]()

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

         if let _ = // dict contains value at indexpath {
             cell.accessoryType = .Checkmark
         } else {
             cell.accessoryType = .None
         }

         return cell
     }


    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
          if ( // dict contains value == indexpath) {
              // remove value from dict
          } else {
          //add value to dict
          }
          tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
      }
Run Code Online (Sandbox Code Playgroud)