I have a UIViewController with a UICollectionView created inside it programmatically. I want to add a button to the cell:
viewDidLoad:
UICollectionViewLayout *layout = [[UICollectionViewFlowLayout alloc]init];
_collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];
[_collectionView registerClass:[EMCell class] forCellWithReuseIdentifier:@"Cell"];
[self.view addSubview:_collectionView];
And then:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
EMCell *cell = (EMCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
cell.backgroundColor = [UIColor greenColor];
UIButton *button = (UIButton *)[cell viewWithTag:200];
[button setFrame:CGRectMake(10, 10, 50, 60)];
[button setTitle:@"Button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:button];
return cell;
}
What am I doing wrong?
Add your button as a subview of cell.contentView
. Also, don't create the button every time collectionView:cellForItemAtIndexPath:
is called. You might be reusing an existing cell that already has a button. Better to add the button in your custom cell's init
method instead. Then just hide the button when you don't need it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With