2017-09-25 12 views
4

私はテーブルビューでデータを追加しました。私は手動で「すべて選択」オプションを最初の位置にリストアするように手動で追加しました。同じものを選択する場合は選択して選択解除する必要があります。私は以下のコードを試してみましたが、そのは、いずれかが、私はこのswift 3.0複数選択ですべて選択する

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ループですか?配列の最後の値だけが適用されました。他の問題は 'unchecked'値を更新する' btnCheckBoxClick'です。 –

+0

配列にデータをロードすると、すべてのゼロがセットされ、セルを選択するとそのインデックス値は1になり、Arrayでu selectAllがすべて1になり、u unselectAllが配列にすべてゼロを入れた場合 –

+0

* *セルフローからのテーブルビューセルをデキューしないでください。それは致命的な誤りです – 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

最初に選択すると、すべてのセルが選択されますが、2番目のセルが選択されると、最初のセルを選択すると、それだけが実行されます –

+0

@JayprakashSinghここにシナリオがあります:1.最初のセルを選択したときにのみすべてのセルを選択します。 他のセルを選択するとどうなりますか? –

+0

2番目のセルの選択は、最初のセルからのみ表示されます。 –

関連する問題