gpt4 book ai didi

ios - Collection View 的复选框无需单击即可执行操作

转载 作者:行者123 更新时间:2023-11-30 13:50:47 27 4
gpt4 key购买 nike

我对collectionView上的复选框的这个问题感到非常困惑。

我已经为“checkbox”创建了一个类组件:UIbutton,之后我使用了

使用“collectionview”,所以当我单击项目的某些复选框时出现问题

我发现另一个项目在之后进行了检查:

如果我选中第 1 项的复选框,则其他项 6 也会选中。

class CheckBox: UIButton {
// Images
let checkedImage = UIImage(named: "checkbox")! as UIImage
let uncheckedImage = UIImage(named: "uncheckbox")! as UIImage

// Bool property
var isChecked: Bool = false {
didSet{
if isChecked == true {
self.setImage(checkedImage, forState: .Normal)
} else if isChecked == false {
self.setImage(uncheckedImage, forState: .Normal)
}
}
}

override func awakeFromNib() {
self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}

func buttonClicked(sender: UIButton) {
if sender == self {
println(self)
if isChecked == true {
isChecked = false
} else if isChecked == false {
isChecked = true
}
}
}
}

extension TrackersController: UICollectionViewDataSource, UICollectionViewDelegate {

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return dataSource.vehicles.count
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier,forIndexPath:indexPath) as! VehicleCell

let vehicles: [Vehicle] = dataSource.vehiclesInGroup(indexPath.section)

let vehicle = vehicles[indexPath.row]

cell.txt_mat.text = vehicle.name
cell.txt_imei.text = vehicle.imei
cell.check_veh.addTarget(self, action: "selectVeh:", forControlEvents: UIControlEvents.TouchUpInside)
cell.check_veh.tag = vehicle.id_tracker!.toInt()!
cell.check_veh.enabled = vehicle.subscription!

return cell
}

func selectVeh(button: CheckBox) {
if(button.isChecked){
vehIds.append(button.tag)
}else if(!button.isChecked){
var index = find(vehIds, button.tag)
vehIds.removeAtIndex(index!)
// JLToast.makeText(String(button.tag)).show()

}
}

Image of item 1

enter image description here

Image of item 6

enter image description here

最佳答案

您应该将选定的索引存储在数组中,然后在 cellForRowAtIndexPath 方法中,您需要检查 indexPath 是否已存在于数组中或不显示/隐藏复选框.

复选框的出现是由于单元格的重用。每次当单元格重新出现在屏幕上时,都会加载单元格的内容。因此您需要在 cellForRowAtIndex 方法中相应地更新内容。

关于ios - Collection View 的复选框无需单击即可执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com