Извините за мой плохой английский. Я хочу добавить несколько интерактивных кнопок в свою настраиваемую ячейку таблицы, и она отлично работает, но у меня возникает проблема, когда я прокручиваю таблицу вниз. После прокрутки кнопки в верхней ячейке не будут реагировать, когда я нажму на них. но когда я возвращаюсь к исходному положению ячейки, кнопки снова реагируют.
я положил это
[cell.btn addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
в методе cellForRowAtIndexPath
; и btnPressed
сработало до того, как я прокрутил вниз. но btnPressed
не может быть вызвано после того, как я прокрутил границу исходного положения этой ячейки.
Надеюсь, кто-то может понять мою проблему, спасибо. Подскажите, пожалуйста, как сделать так, чтобы кнопка реагировала даже на прокрутку таблицы? заранее спасибо
способ 1
когда я попробовал метод addtarget в cellForRowAtIndexPath
, и кодировка такая
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"CustomTableViewCell";
CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
cell = [nib objectAtIndex:0];
}
[cell.btn addTarget:self action:@selector(btnPressed:)
return cell;
}
метод 2
я также попробовал другой метод, который не добавляет цель в cellForRowAtIndexPath
Вот мой код с делегатом
в customcell.h я добавил это
@protocol CustomCellDelegate <NSObject>
- (void)didClickOnbtn;
@end
в customcell.m я добавил это
@interface CustomTableViewCell()
@property (nonatomic, strong) NSDictionary *currentDict;
@property (nonatomic,assign) id<CustomCellDelegate>delegate;
@end
а также
- (IBAction)didClickOnbtn:(id)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOnbtn)]) {
[self.delegate didClickOnbtn];
}
}
и я установил пользовательский делегат ячейки для просмотра таблицы
в контроллере tabelview у меня также есть метод didClickOnbtn
и <CustomCellDelegate>
и кнопка может вызвать метод didClickOnbtn
в ответе контроллера таблицы перед прокруткой таблицы.
ОБНОВЛЕНИЕ: я сделал представление заголовка раздела в таблице. И я узнаю, что когда я удаляю представление заголовка раздела, проблема решена. Хотя я не знаю, почему вид заголовка раздела отключил кнопку, теперь она работает хорошо. Надеюсь, это может помочь кому-то, кто находится в той же ситуации, что и я.
p.s. Оба метода работают.
delaysContentTouches
, установленный вYES
(в UIScrollView, т. е. в суперклассе UITableView), иногда может создавать иллюзию неработающих кнопок. - person Ryan Dignard   schedule 02.02.2015