У меня есть UIButton
внутри пользовательского UITableViewCell
.Я добавил эту кнопку в Интерфейсном Разработчике.
Затем я использую следующий код в cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"GenericCellButton";
GenericCellButton *cell = (GenericCellButton *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (GenericCellButton *)currentObject;
break;
}
}
}
[cell.inviteButton addTarget:self action:@selector(inviteButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[cell.inviteButton setTag:indexPath.row];
// This statement doesn't get called...?
if ([cell.inviteButton.titleLabel.text isEqualToString:@"Please Wait"]) {
[cell.inviteButton setEnabled:NO];
[cell.inviteButton setTitle:@"Please Wait" forState:UIControlStateDisabled];
}
...
Это метод followTapped:
:
- (void)followTapped:(id)sender {
UIButton *button = (UIButton *)sender;
[button setEnabled:NO];
[button setTitle:@"Please Wait" forState:UIControlStateDisabled];
// I then call a service method that then fires off a callback method that refreshes the `tableView`. This changes the button text to "Following".
}
Все работает просто отлично с точки зрения сохранения записи.
Проблема в том, что до вызова метода обратного вызова;если пользователь прокручивает видимую ячейку вне поля зрения до обновления tableView
, он сбрасывает кнопку обратно на «Follow» вместо «Please Wait», что означает, что, если они снова нажмут кнопку «Follow», это вызовет проблемы в моембаза данных.
Как я могу остановить обновление этой конкретной ячейки до перезагрузки tableView
, если она прокручивается вне поля зрения?Я попытался добавить некоторую логику в cellForRowAtIndexPath:
, которая проверяет, является ли текст кнопки «Пожалуйста, подождите», но, похоже, он не работает должным образом.Он по-прежнему сбрасывается обратно на «Follow».