0

У меня есть UICollectionView со всеми его ячейками.Наличие UIButton в UICollectionViewCell

я это декларируется как подвид:

@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) необходимо, поскольку ячейки повторно используются.

Как это сделать сейчас? Благодарю.

+0

Что на самом деле не так? Проверка nil не имеет никакого отношения к повторному использованию, если вы не удалите кнопку в другом месте. – Wain

+1

Почему вы не используете раскадровку для коллекции с прототипом? Это лучший способ установить кнопку на раскадровке. – merge

+0

Кадр установлен в порядке и правилен в // добавлении всех вещей aButton здесь – cdub

ответ

0

Добавить код действия кнопки до того, как кнопка добавлена ​​для просмотра .... Возможно, это сработает.

// 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

не уверен, почему, но этот переключатель разрешил кнопку нажимать для вызова. – cdub

0

Думаю, способ, которым вы инициализируете кнопку, будет давать вам кадр как 0,0,0,0. Поэтому сначала дайте ему правильную рамку и заголовок, чтобы они были видны на экране.

Затем попробуйте нажать на это название и посмотреть, работает оно или нет.

0

Непонятно, что вы пытаетесь достичь здесь, но кнопка не работает, потому что вы не устанавливаете ее положение и размер на ячейку. Это можно сделать, установив рамки или ограничения компоновки.

Попробуйте установить рамку кнопки:

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

Вы также можете установить цвет фона для кнопки, просто чтобы сделать его видимым на клетке:

_aButton.backgroundColor = [UIColor redColor]; 

Все остальное правильно, кнопка должна Работа.

Смежные вопросы