在 UICollectionViewCell 中点击 UIButton

Having a UIButton be tapped in a UICollectionViewCell

我有一个 UICollectionView,它的单元格都已布局。

我将其声明为子视图:

@property (nonatomic, strong) UIButton *aButton;

然后我在每个单元格中声明如下:

if (_aButton == nil)
{
    _aButton = [UIButton buttonWithType:UIButtonTypeSystem];
}

// Add in all _aButton info here

[self.contentView addSubview:_aButton];

// Call to button pressed for button

[_aButton addTarget:self action:@selector(aButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

按钮点击方法如下:

- (IBAction) aButtonPressed:(UIButton *) sender
{
    // Code never gets heree
}

if(_aButton== `nil) 是必需的,因为单元会被重用。

现在我该如何进行这项工作?谢谢

在将按钮添加到视图之前添加按钮操作代码....可能会起作用。

 // Call to button pressed for button

[_aButton addTarget:self action:@selector(aButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

// Add in all _aButton info here

[self.contentView addSubview:_aButton];

我认为,您初始化按钮的方式将为您提供 0,0,0,0 帧。所以首先给它一个适当的框架和标题,以便在屏幕上可见。

然后尝试点击该标题,看看它是否有效。

不清楚您在此处尝试实现什么,但该按钮不起作用,因为您没有在单元格上设置它的位置和大小。这可以通过设置框架或布局约束来完成。

尝试设置按钮框:

_aButton.frame = CGRectMake(0.0f, 0.0f, 50.0f, 50.0f);

您还可以为按钮设置背景颜色,使其在单元格上可见:

_aButton.backgroundColor = [UIColor redColor];

其他一切都正确,按钮应该可以工作。