Edit:
Решение для этого ответа связано с iOS7, иногда возвращающим NSIndexPath
и другими моментами возврата NSMutableIndexPath
. Проблема не была связана с begin/endUpdates
, но, надеюсь, решение поможет некоторым другим.
Все - я запускаю свое приложение на iOS 7, и у меня возникают проблемы с методами beginUpdates
и endUpdates
для UITableView
.
У меня есть табличное представление, которое нужно изменить высоту ячейки при касании. Ниже мой код:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// If our cell is selected, return double height
if([self cellIsSelected:indexPath]) {
return 117;
}
// Cell isn't selected so return single height
return 58;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
ChecklistItemCell *cell = (ChecklistItemCell *)[self.tableview cellForRowAtIndexPath:indexPath];
[cell.decreaseButton setHidden:NO];
[cell.increaseButton setHidden:NO];
// Toggle 'selected' state
BOOL isSelected = ![self cellIsSelected:indexPath];
DLog(@"%@", selectedIndexes);
DLog(@"is selected: %@", isSelected ? @"yes":@"no");
// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = @(isSelected);
selectedIndexes[indexPath] = selectedIndex;
[tableView beginUpdates];
[tableView endUpdates];
}
Методы beginUpdates
и endUpdates
работают довольно непоследовательно. Метод didSelectRowAtIndexPath
вызывается правильно при каждом касании (я думал, что сначала пользовательский интерфейс блокируется), а selectedIndexes
правильно сохраняет переменные значения. Проблема в том, что иногда я касаюсь ячейки таблицы, и все методы называются правильно, но высота ячейки не изменяется. Кто-нибудь знает, что происходит?