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

标签 ios swift uicollectionview uibutton uicollectionviewcell

当按下按钮(UICollectionView 之外)时,我尝试向 UICollectionView 中的每个单元格添加一个 UIButton,然后不存在时将其删除。

基本上,如果为 true,则为 bool 值 - 显示/添加,否则隐藏/删除。这是我的cellForItemAt。我还尝试将其添加到 willDisplay 单元格

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,并且按钮不显示。单击按钮更改 bool 值后,将出现按钮。当单击按钮将 bool 值设置回 false 时,按钮将保持不变。我认为这是与 btnItemDelete.removeFromSuperview() 相关的事情 - 有没有不同的方法来做到这一点?我想我无法隐藏/显示它们,因为每次重新加载时它都会不断向单元格添加一个新按钮。

最佳答案

首先您需要添加到

cell.contentView 不是 cell

按此

btnItemDelete.removeFromSuperview()

您即时删除了一个未添加的按钮,而您需要

cell.contentView.subviews.forEach {
  if $0.tag == 12 {
     $0.removeFromSuperview()
   }
}
<小时/>

我认为最好的方法是在单元格布局上添加按钮,然后管理它的外观,例如

cell.myButton.isHidden = !isEdit

关于ios - Swift 4.2 使用 UICollectionViewCell 添加/删除按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53024755/

相关文章:

ios - ios和非ios设备之间的蓝牙连接

ios - 获取按钮操作 : UICollectionView Cell

ios - 在 UIcollectionview 中出列多个单元格的方法

ios - NSPointerFunctionsObjectPointerPersonality 强制 containsObject : method to use isEqual: (doesn't work)

ios - 在主视图顶部添加新 View (例如错误消息)时如何自动布局约束

ios - 如何确定 iOS 中静态库的特定切片的大小

ios - 通过 gpuimage2 swift 中的 slider 控件将亮度等滤镜强度从 0 更改为 100

ios - 如何在 swift 中将 PHASset UTI 转换为具有 mime 类型的字符串

swift - 我无法启动 Main.storyboard 或 LaunchScreen.storyboard

ios - Imageview 没有出现在以编程方式创建的 Collection View 中