您好我有一个集合视图,其中每个单元格都有一个复选框。 我使用此复选框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")
}
当我点击一个复选框时使用此代码时,它只打印一次检查。 我相信我不知怎的,我必须声明我点击哪个检查,但我不知道如何使用它。
答案 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
}
}
}
}
我没有测试过请检查代码并根据您的要求进行更改