所以我有这个集合视图,其中包含位于右上角的编辑按钮。如何将动作连接到其中?
我尝试在cell.editbutton.addTarget
中添加collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
但是它没有检测到touchUpInside事件。
答案 0 :(得分:17)
在UICollectionViewCell中创建UIButton的插座,写入
func collectionView(_ collectionView: UICollectionView,
cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
cell.button.tag = indexPath.row
cell.button.addTarget(self,
action: #selector(self.yourFunc(),
for: .touchUpInside)
}
func yourFunc(sender : UIButton){
print(sender.tag)
}
确保为按钮和UICollectionViewCell启用了userInteraction。
答案 1 :(得分:7)
可能需要你 -
将此代码写入cellForItemAtIndexPath
Swift 2.X
let editButton = UIButton(frame: CGRectMake(0, 20, 40,40))
editButton.setImage(UIImage(named: "editButton.png"), forState: UIControlState.Normal)
editButton.addTarget(self, action: #selector(editButtonTapped), forControlEvents: UIControlEvents.TouchUpInside)
cell.addSubview(editButton)
Swift 3.X
let editButton = UIButton(frame: CGRect(x:0, y:20, width:40,height:40))
editButton.setImage(UIImage(named: "editButton.png"), for: UIControlState.normal)
editButton.addTarget(self, action: #selector(editButtonTapped), for: UIControlEvents.touchUpInside)
cell.addSubview(editButton)
并执行您的操作 -
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func editButtonTapped() -> Void {
print("Hello Edit Button")
}
答案 2 :(得分:1)
在UICollectionView单元格上按钮(以编程方式或使用故事板)。在单元类文件中为该按钮添加操作,并在该单元类文件中声明委托,并在按钮操作方法中调用相同的委托来执行编辑操作。
然后在ViewController中实现相同的委托,您在其中创建了集合视图
答案 3 :(得分:0)
protocol CollectionViewCellDelegte {
func collectionViewCellDelegte(didClickButtonAt index: Int)
}
class ImageCollectionViewCell: UICollectionViewCell {
var index = 0
var delegte: CollectionViewCellDelegte? = nil
@IBAction func buttonAction(_ sender: UIButton) {
if let del = self.delegte {
del.collectionViewCellDelegte(didClickButtonAt: index)
}
}
}
答案 4 :(得分:-1)
据我所知,您想调用编辑按钮操作而不是didSelectItemAt:indexPath。 我通过覆盖 canBecomeFocused (返回false)解决了这个问题,然后点击编辑按钮即可涉及您的编辑按钮操作