当我勾选一个复选框时,选中所有复选框(Swift)

时间:2016-06-29 12:34:05

标签: ios swift uitableview checkbox uicollectionview

您好我有一个集合视图,其中每个单元格都有一个复选框。 我使用此复选框https://github.com/zhouhao27/WOWCheckbox

所有单元格都有自己的复选框,但标题所示的问题是,当我点击复选框时,会选中所有复选框。 实际上,当我点击第一个所有赔率复选框(1-3-5-7 -...)被选中时,当我点击第二个时,然后检查所有复选框。

我将视图连接到我的单元格文件,我将其更改为WOWCheckbox,如文档所述。

我没有改变任何其他事情。

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


        cell.check1.tag = indexPath.row
        cell.check1.addTarget(self, action: #selector(ThirdTab.follow(_:)), forControlEvents: UIControlEvents.TouchUpInside)

        return cell



    }




func follow(sender:WOWCheckbox!) {
        print("check")
    }

当我点击一个复选框时使用此代码时,它只打印一次检查。 我相信我不知怎的,我必须声明我点击哪个检查,但我不知道如何使用它。

1 个答案:

答案 0 :(得分:2)

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

//创建模型

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

//控制器

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

我没有测试过请检查代码并根据您的要求进行更改