swift2 隐藏UICollectionView单元格中的按钮

jum4pzuy  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(182)

我正在以编程方式创建单元格,并为每个单元格添加一个删除按钮。问题是,我想切换它们的.hidden状态。我的想法是使用一个编辑按钮,同时切换所有按钮的状态。也许我的方法不对?

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("verticalCell", forIndexPath: indexPath) as! RACollectionViewCell
    let slide = panelSlides[indexPath.row]
    cell.slideData = slide
    cell.slideImageView.setImageWithUrl(NSURL(string: IMAGE_URL + slide.imageName + ".jpg")!)
    cell.setNeedsLayout()

    let image = UIImage(named: "ic_close") as UIImage?
    var deleteButton = UIButton(type: UIButtonType.Custom) as UIButton
    deleteButton.frame = CGRectMake(-25, -25, 100, 100)
    deleteButton.setImage(image, forState: .Normal)
    deleteButton.addTarget(self,action:#selector(deleteCell), forControlEvents:.TouchUpInside)
    deleteButton.hidden = editOn
    cell.addSubview(deleteButton)
    return cell
}

@IBAction func EditButtonTap(sender: AnyObject) {
    editOn = !editOn
    sidePanelCollectionView.reloadData()
}
up9lanfz

up9lanfz1#

我想你需要做的是按索引遍历所有的数据,然后在UICollectionView上为每个索引调用cellForItemAtIndexPath:。然后你可以把现有的单元格转换成你指定的类型as? RACollectionViewCell,然后用这种方法设置按钮隐藏值。
示例(抱歉,我现在没有在xcode中准确地验证这一点,但这是要点):

for (index, data) in myDataArray.enumerated() {
   let cell = collectionView.cellForRowAtIndexPath(NSIndexPath(row: index, section: 0)) as? RACollectionViewCell
   cell?.deleteButton.hidden = false
}

您可能还需要在视图控制器中使用某种isEditing布尔变量来跟踪您处于编辑状态的事实,以便在滚动时,新配置的单元格可以继续显示(带/不带按钮)。您还需要使用上面的现有代码来确保它在滚动发生时继续工作。与其每次都创建一个新的删除按钮,你应该把这个按钮放在你的故事板上,并且也设置一个引用,然后你就可以使用类似cell.deleteButton.hidden = !isEditing的东西

相关问题