2017-09-25 22 views
4

我在表格視圖中添加了數據,並且我已經手動添加了「全選」選項以列出第一個位置,現在當用戶選擇第一個選項時,選擇全部,然後所有項目進入列表在選擇時應該被選中並取消選擇。我已經嘗試過下面的代碼,但它不工作,所以任何人都可以幫我解決這個問題swift 3.0多選select All選項

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let cell = ObjTableview.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SelectUserCell 
    for i in 0 ..< self.getStudentName.count { 
     cell.btnCheckbox.setImage(UIImage(named: "selectedItem"), for: .normal) 
     print (i) //i will increment up one with each iteration of the for loop 

    } 

} 
var unchecked = true 
@IBAction func btnCheckBoxClick(_ sender: Any) { 

if unchecked == true { 
      //(sender as AnyObject).setImage(UIImage(named: "selectedItem"), for: .normal) 
      cell?.btnCheckbox.setImage(UIImage(named: "selectedItem"), for: .normal) 
      //unchecked = false 
      let cello = ObjTableview.cellForRow(at: indexPath!) 
      print(cello!) 
      ObjTableview.reloadData() 
     }else 
     { 
      //(sender as AnyObject).setImage(UIImage(named: "unSelectedItem"), for: .normal) 
      cell?.btnCheckbox.setImage(UIImage(named: "unSelectedItem"), for: .normal) 
      // unchecked = true 
     } 
} 
+0

在行的單元格中,您只設置了'UIImage(named:「selectedItem」'和爲什麼for循環?只應用了數組的最後一個值,我可以看到的其他問題是'btnCheckBoxClick',您正在更新'unchecked'值 –

+0

在Array上創建你的邏輯,一旦數據加載到數組中,將所有的零全部替換爲零,當你選擇任何單元格時,將該索引值更改爲1,並且當你在Array中選擇AllAll時,將所有1.和當unselectAll放入數組中全部爲零 – 2017-09-25 06:18:12

+0

* *從來沒有**在'cellForRow ...'之外出列表格視圖單元格,這是一個致命的錯誤 – vadian

回答

1

Jayprakash,你幾乎在那裏。您需要修改一些線 -

下面是修改後的代碼片斷

var unchecked:Bool = true 

@IBAction func btnCheckBoxClick(_ sender: Any) { 

    if(unchecked){ 

     unchecked = false 
    } 
    else{ 

     unchecked = true 
    } 


    ObjTableview.reloadData() 


} 



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

    if(indexPath.row == 0){ 

      btnCheckBoxClick(sender: UIButton()) 

     } 

} 


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 

     let cell : SelectUserCell! 
     cell = tableView .dequeueReusableCell(withIdentifier: "SelectUserCell", for: indexPath) as! SelectUserCell 
     cell.selectionStyle = UITableViewCellSelectionStyle.none 


     if(unchecked){ 

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

     } 
     else{ 

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


    // Do your stuff here 

    return cell 
} 

滾開,將簡化您的代碼結構。

+0

當選擇第一個時,所有的單元格都被選中,但是當第二個單元格被選中時,所有的單元格都被創建如果我只選擇第一個單元格,那麼它將只完成 –

+0

@JayprakashSingh以下是這些方案:1.只有當您選擇第一個單元格右側時才選擇所有單元格。 那麼當你選擇其他細胞時會發生什麼? –

+0

第二個單元格的選擇完成,我只能從第一個單元格中看到 –