2016-06-29 19 views
2

Hallo Ich habe eine Sammelansicht, in der ich eine Checkbox in jeder Zelle habe. Ich verwende dieses Kontrollkästchen https://github.com/zhouhao27/WOWCheckbox.Wenn ich ein Kontrollkästchen ankreuze, werden alle Kontrollkästchen aktiviert (Swift)

Alle Zellen haben ihre Checkbox, aber das Problem, wie der Titel sagt, ist, dass, wenn ich auf das Kontrollkästchen klicke, alle Checkboxen aktiviert sind. Eigentlich, wenn ich die ersten alle Chancen Kontrollkästchen (1-3-5-7 -...) antippen werden überprüft, und wenn ich die zweite tippen, dann sind alle Kontrollkästchen aktiviert.

Ich verband die Ansicht mit meiner Zellendatei, ich ändere es in WOWCheckbox, wie die Dokumentation sagt.

Ich habe nichts anderes geändert.

Wenn ich diesen Code benutze, wenn ich ein Kontrollkästchen anklicke, wird nur einmal geprüft. Ich glaube, ich muss irgendwie erklären, welchen Check ich tap, aber ich weiß nicht, wie man es benutzt.

Antwort

2
// func follow(sender:WOWCheckbox!) { 
    //  sender.tag//will get the which row you checked 
    //do logic based on tag 
    //} 

// Neues Modell

class checkList{ 
    var item = "" 
    var checked = false 
} 

// Controller-

class SampleViewController: ViewController,WOWCheckboxDelegate{ 

    var List = [checkList]() 

    override func viewDidLoad() { 
    super.viewDidLoad() 
     for i in 1...10 { 
     let object = checkList() 
     object.item = i.description 
     object.checked = false 
     List.append = obj 
    } 
    _collectionview.reloadData() 
    } 

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Interest Cell", forIndexPath: indexPath) as! ThirdTabCell 


    cell.check1.tag = indexPath.row 
    if List[indexPath.row].checked { 
    cell.check1.isChecked = true 
    } 
    else{ 
    cell.check1.isChecked = false 
    } 

    return cell 
    } 
    //delegate function by WOWCheckbox 
    func didSelectCheckbox(checkbox : WOWCheckbox) { 

     if checkBox.tag == 0{ 
     //first row 
     for i ...< List.count { 
      if i % 2 != 0 { 
       List[i].checked = true 
      } 
      else{ 
       List[i].checked = false 
      } 
      collectionView.reloadData() 
      return 
      } 
     } 
     //second row 
     else if checkBox.tag == 1{ 

      for obj in List { 
      obj.checked = true 
      } 
      collectionView.reloadData() 
      return 
     } 
     else { 
      if list[checkbox.tag].isChecked { 
      checkBox.isChecked = false 
      list[checkbox.tag].checked = false 
      } 
      else{ 
      list[checkbox.tag].checked = true 
      checkBox.isChecked = true 
      } 
     } 
     } 
    } 

i getestet nicht bitte den Code überprüfen und ändern entsprechend Ihrer Anforderung

+0

Sie Ihnen danken antworte, aber ich kann dich nicht wirklich verstehen .. kannst du es bitte mehr erklären? –

+0

die Überprüfung erfolgt vor dem Aufruf der Funktion Ich habe versucht, ohne Code und Stills alles überprüfen –

+0

Tag wird verwendet, um zu identifizieren, welches Kontrollkästchen aktiviert ist. (cell.check1.tag = indexPath.row), die Sie bereits dafür angegeben haben. Wenn Sie auf checkBox klicken, wird die Methode folgen. In dieser Methode erhalten Sie, welches Kontrollkästchen ausgewählt ist. So können Sie Ihre Logik basierend auf dem, was Sie in Ihrer Frage erwähnt haben, tun. –

Verwandte Themen