Удаление разделов UITableView в сочетании с пользовательскими заголовками разделов UIViews = ошибка в коде Apple?

Я пытаюсь удалить раздел из UITableView, используя анимацию и пользовательский заголовок раздела таблицы UIViews.

Я использую...

//Deletion from my model done here (not shown) and then perform the deleteSections...
[self.tableView beginUpdates];
[self.tableView 
  deleteSections:[NSIndexSet indexSetWithIndex:index]
  withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

Это прекрасно работает, когда я предоставляю заголовки разделов, используя

tableView:titleForHeaderInSection:

Но когда я предоставляю свой собственный заголовок, используя

tableView:viewForHeaderInSection:

Он удаляет нужный раздел и сдвигает все разделы под ним вверх. Я думаю, что происходит, когда он запрашивает новый пользовательский заголовок непосредственно перед анимацией удаления. Так что оживляет удаление нужного ряда +1.

Я заканчиваю с каждым разделом, сдвинутым вверх на один, и пустым разделом внизу.

Если я прокручиваю до конца таблицы, то возвращаюсь, разделы снова найдены правильно.

Я не думаю, что это то, что я могу исправить. Кажется, что проблема в удалении раздела обработки кода Apple с пользовательскими заголовками раздела. Обычно это хорошая идея, чтобы сначала винить себя:) . Я использую ту же логику, чтобы найти объект модели для моих пользовательских заголовков разделов по сравнению с заголовками разделов NSString, поэтому я не могу понять, как это может быть проблемой с моим кодом.

Кто-нибудь знает, как это исправить, или я должен переосмыслить свое использование разделов?

1 ответ

Я решил эту проблему, чтобы вызвать reloadSections:atIndexPath: это один из способов. Другие способы: перезагрузить таблицу (вы можете потерять анимацию), используя контроллер выборки и некоторые свойства в представлении заголовка. Когда вы удаляете один объект, контроллер выборки может перезагрузить разделы для вас.

Другие вопросы по тегам