实现UICollectionView按钮点击(Achieve button click in UIC

2019-07-17 10:57发布

有没有一种方法我可以从里面的按钮按钮点击事件UICollectionViewCell ? 我用笔尖来填充集合视图,该电池具有按钮,但它的作用是没有得到调用。 我认为这个问题是与委托被调用。 我怎样才能解决这个问题?

如何我创建:

  1. 添加一个空的笔尖,创建了集合观察室
  2. 增加了一个h和.m文件,并为该类创建作出的细胞笔尖的文件的所有者
  3. 写在类的动作。
  4. 连接按钮的动作

有没有一种方法可以让我得到的动作? 我究竟做错了什么?

Answer 1:

加入这样的按钮操作:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CellId" forIndexPath:[indexPath row]]; 

    [[cell myButton] addTarget:self action:@selector(myClickEvent:event:) forControlEvents:UIControlEventTouchUpInside];

    return cell;

}


- (IBAction)myClickEvent:(id)sender event:(id)event {

    NSSet *touches = [event allTouches];

    UITouch *touch = [touches anyObject];

    CGPoint currentTouchPosition = [touch locationInView:_myCollectionArray];

    NSIndexPath *indexPath = [_myCollectionArray indexPathForItemAtPoint: currentTouchPosition];

}


Answer 2:

你从对象面板拖动“集合视图小区”创建笔尖细胞是很重要的。 如果您使用的UIView,只是改变类的身份检查该单元格,则操作将无法正常工作。



Answer 3:

下面是SWIFT 3.1代码

// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    // get a reference to our storyboard cell
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! BlueCircleViewCell

    // Use the outlet in our custom class to get a reference to the UILabel in the cell
    cell.bgImage.image = UIImage(named: items[indexPath.row])
    cell.addButton.addTarget(self, action: #selector(addCircle(_:)), for: .touchUpInside)

//        cell.backgroundColor = UIColor.cyan // make cell more visible in our example project

    return cell
}

func addCircle(_ sender:UIButton){
    //CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
    let buttonPosition:CGPoint = sender.convert(.zero, to: self.collectionView)
    let indexPath:IndexPath = self.collectionView.indexPathForItem(at: buttonPosition)!
    onAddBlueCircle(indexPath: indexPath)
}


文章来源: Achieve button click in UICollectionView