В моем приложении у меня есть ячейки UITableView с несколькими кнопками. 4 UIButtons на ячейку. Для каждого UIButton я хочу добавить UILongPressGestureRecognizer. Код ниже:Обнаружение, если UITableViewCell является повторно используемой ячейкой
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
FriendViewCell *cell = (FriendViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
for(int i =0; i<4; i++) {
UIButton *button = cell.buttons[i];
UILabel *label = cell.labels[i];
[button setTag:(int)indexPath.row*4+i];
[button addTarget:self action:@selector(friendTapped:) forControlEvents:UIControlEventTouchUpInside];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressFriend:)];
[button addGestureRecognizer:longPress];
}
}
Я просто понял, что, хотя, если ячейка повторно, то я добавляю жест несколько раз в кнопки. Есть ли способ определить, будет ли созданная ячейка повторно использоваться или новая? Я не думаю, что могу переместить код в класс FriendViewCell, потому что мой целевой адрес friendTapped: находится в моем UITableViewController. Любые указатели будут очень благодарны! спасибо
Ваш код неполный, где вам создавать/распределять ячейки? – meronix
Почему бы вам не настроить теги и распознаватели жестов в вашем раскадровке (или файле nib)? – jlehr
@jlehr количество кнопок динамическое и зависит от размера массива, поэтому теги не могут быть настроены в раскадровке. Правильно? – Kex