Представление заголовка последнего раздела не нарисовано после insertRowForIndexpath и deleteRowForIndexpath - PullRequest
0 голосов
/ 20 июля 2011

У меня есть настройка с разделами в UITableView, у всех из которых есть настраиваемый вид заголовка раздела.Только один раздел за раз может иметь видимые строки.

Чтобы создать эффект, который отображает другие строки ячеек, я в основном использую следующую функцию:

[self.tableView beginUpdates];

if ( sectionHeaderInsert >= 0 && sectionHeaderInsert <= numberOfSectionsInTableView ) {
    [ticketReastepsScreenView.tableView insertRowsAtIndexPaths:indexPathsInsert withRowAnimation:UITableViewRowAnimationFade];
}

[self updateTmpSelectedNumberToCurrent];

if ( sectionHeaderRemove >= 0 && sectionHeaderRemove <= numberOfSectionsInTableView ) {
    [ticketReastepsScreenView.tableView deleteRowsAtIndexPaths:indexPathsRemove withRowAnimation:UITableViewRowAnimationFade];
}

[self.tableView endUpdates];

Теперь то, что происходит в конценовый раздел «открывается», а старый «закрывается» часто, но: если у меня будет больше разделов, которые помещаются на экране, последний (частично) видимый раздел не будет перекрашиваться повторно - он полностью покрыт белым.

Все разделы спрашиваются о новых высотах, и я думаю, что он даже запрашивает новые представления (которые у меня есть в массиве).Затем представления просят [view setNeedsDisplay];

Когда я прокручиваю немного, чтобы последний заголовок раздела исчез, а затем снова прокручиваю его, он снова оживает и виден, пока я не изменю текущий открытыйраздел снова.

UPD : Это забавное поведение появляется только тогда, когда я делаю insertRow и deleteRow вместе.Я также могу просто закрыть один раздел (deleteRow), а затем в сенсорном действии раздела открыть новый (insertRow), и поведение будет другим.

Я также попытался создать endUpdates и beginUpdates между двумя действиями- нет положительного результата.

UPD2 : при переходе в конечную позицию (позиции хорошие) я вижу, что последний заголовок раздела отображается правильно, но затем исчезает (без анимации, простой простойбелый поверх него)

1 Ответ

0 голосов
/ 29 июля 2011

Какова бы ни была реальная проблема - я переписал тяжелые части TableView и думаю, что я выучил следующее:

Если вам нужен UITableViewCell, используйте UITableViewCell.Если вам нужен UIView для заголовков разделов, используйте UIView для заголовков разделов.

Я смешал заголовки разделов с TableViewCells просто для повторного использования некоторого кода, который был там.Поскольку категории могут расширять только один конкретный класс, мне пришлось использовать методы / объекты делегирования / провайдера для повторного использования определенного кода.Возможно, потребуется больше подклассов, но на самом деле это намного безопаснее.

Кроме того, теперь автопрокрутка до позиции теперь работает значительно лучше, и артефакты рисования исчезли.

...