Swift 4.2使用UICollectionViewCell添加/删除按钮

时间:2018-10-27 17:56:41

标签: ios swift uicollectionview uibutton uicollectionviewcell

我试图在按下UIButton以外的按钮时,向UICollectionView中的每个单元格添加一个UICollectionView,然后在没有按下时将其删除。

基本上为boolean(如果为true)-显示/添加,否则隐藏/删除。这是我的cellForItemAt。我还尝试将其添加到willDisplay cell

let btnItemDelete = UIButton()
btnItemDelete.tag = indexPath.row
btnItemDelete.addTarget(self, action: #selector(self.btnItemDeleteClick), for: .touchUpInside) //Selector works
btnItemDelete.frame = CGRect(x: cell.bounds.width-22, y: 2, width: 20, height: 20) //Creation works
btnItemDelete.setImage(deleteImage, for: .normal) //Image works



if (isEdit) {
    //Add or Show
    cell.addSubview(btnItemDelete)
}
else {
    //Delete or Hide
    btnItemDelete.removeFromSuperview()
}

运行此命令时,isEdit最初设置为false,并且按钮不显示。单击按钮更改布尔值后,将显示按钮。单击按钮将布尔值设置回false时,按钮保持不变。我发现btnItemDelete.removeFromSuperview()有点问题-是否有其他方法可以做到这一点?我想我无法隐藏/显示它们,因为它将在每次重新加载时继续向该单元格添加一个新按钮。

1 个答案:

答案 0 :(得分:0)

首先您需要添加到

cell.contentView不是cell

以此

btnItemDelete.removeFromSuperview()

您立即删除了一个未添加的按钮,相反,您需要

cell.contentView.subviews.forEach {
  if $0.tag == 12 {
     $0.removeFromSuperview()
   }
}

我认为最好的方法是先在单元格布局上添加按钮,然后像这样管理其外观

cell.myButton.isHidden = !isEdit