Проблема в том, что вы, возможно, изменили размер вашей таблицы.Например, вы должны добавить или удалить некоторые исходные данные для табличного представления.
В этом случае, когда вы вызываете reloadData
, ваша таблица полностью перезагружается, включая размеры разделов и количество этих разделов.
Но когда вы вызываете reloadRowsAtIndexPaths:withRowAnimation:
, эти параметры вашего табличного представленияне перезагружаются.Это вызывает следующую проблему: когда вы пытаетесь перезагрузить некоторую таблицу ячеек, проверьте размер табличного представления и увидите, что он был изменен.Это приводит к аварии.Этот метод можно использовать только тогда, когда вы не хотите перезагружать представление ячейки (например, метка изменилась или вы хотите изменить ее размер).
Теперь, если вы хотите удалить / добавить ячейки из /к табличному представлению следует использовать следующий подход:
- Сообщите таблице, что ее размер будет изменен, вызвав метод
beginUpdates
из UITableView
- Сообщите о вставке новой строки (строк)используя метод
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
- Сообщите об удалении строк, используя метод
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
- Сообщите таблице, что ее размер был изменен, вызвав метод
endUpdates
из UITableView
Надеюсь, это будет полезно