我正在以编程方式创建单元格,并为每个单元格添加一个删除按钮。问题是,我想切换它们的.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()
}
1条答案
按热度按时间up9lanfz1#
我想你需要做的是按索引遍历所有的数据,然后在
UICollectionView
上为每个索引调用cellForItemAtIndexPath:
。然后你可以把现有的单元格转换成你指定的类型as? RACollectionViewCell
,然后用这种方法设置按钮隐藏值。示例(抱歉,我现在没有在xcode中准确地验证这一点,但这是要点):
您可能还需要在视图控制器中使用某种
isEditing
布尔变量来跟踪您处于编辑状态的事实,以便在滚动时,新配置的单元格可以继续显示(带/不带按钮)。您还需要使用上面的现有代码来确保它在滚动发生时继续工作。与其每次都创建一个新的删除按钮,你应该把这个按钮放在你的故事板上,并且也设置一个引用,然后你就可以使用类似cell.deleteButton.hidden = !isEditing
的东西