2017-04-14 29 views
0

我在uitableview中遇到問題,只要我選擇一個單元格4沒有單元格自動獲取選擇...我厭倦了這個問題有人請幫助這裏是我的didselectrowfunc ..UItableview一次點擊多個單元格正在檢查迅速3

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) 
} 

} 

} 

///////// 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 
    } 
+0

這是因爲表格單元格是reusable.What你想幹什麼? –

+0

我想讓用戶選擇多種疾病,但問題是如何做到這一點,通過這種代碼自動選擇不同的細胞..... **我知道它是重用細胞,但如何克服這一點,當表重用細胞它是未檢查** –

+0

添加cellForRow方法的代碼 –

回答

2

試試這個邏輯希望這將解決您的問題

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) 
     } 
+0

謝謝很多人@Anil Kumar –

+0

歡迎@HammerClass –

-1

只要利用prepareForReuse方法UITableViewCell。在你FoodTableViewCell類實現prepareForReuse menthod像下面

class FoodTableViewCell: UITableViewCell 
{ 
    override func awakeFromNib() 
    { 
     super.awakeFromNib() 
     // Initialization code 
    } 
    override func setSelected(selected: Bool, animated: Bool) 
    { 
     super.setSelected(selected, animated: animated) 
     // Configure the view for the selected state 
    } 
    override func prepareForReuse() 
    { 
     self.accessoryType = UITableViewCellAccessoryType.none 
     //add code to reset selection if there is any other selection mechanism 
    } 
} 
+0

通過使用這種方法,當我向下滾動並回滾選定的單元格時會自動取消選中... @raki –

+0

添加選擇邏輯內部cellForRowAtIndexPath方法,這將解決您的問題 – raki