Я работаю над приложением для чтения iOS RSS. Мое приложение реализует UITableView с пользовательскими заголовками секций:UITableView ReloadData не использует выделенные ячейки
UINib *sectionHeaderNib = [UINib nibWithNibName:@"HeadlineView" bundle:nil];
[self.newsTable registerNib:sectionHeaderNib forHeaderFooterViewReuseIdentifier:SectionHeaderViewIdentifier];
Каждый заголовок раздела, используемый для отображения заголовок статьи. У меня есть возможность изменить между «уже увиденными» статьями и новыми статьями. Каждый раз, когда я переключаюсь между опциями, массив просмотров таблицы данных изменяется таким образом, мне нужно позвонить UITableView ReloadData:
[self.newsTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
, когда я называю этот метод он занимает немного больше, чем на 1 секунду для загрузки (который, кажется, застрял), поскольку он перезагружает все заголовки разделов вместо использования заголовков разделенных разделов. , когда я просто просматриваю таблицу, все работает нормально, а dequeue работает нормально.
Каждый раз, когда я инициализирую заголовок раздела, я настраиваю 3 распознавателя жестов, и это то, что занимает много времени. но если заголовок секции отменяется, распознаватели жестов уже установлены так, что они бывают быстрыми.
это код Dequeue:
NowsHeadlineHeaderView *sectionHeaderView = [self.newsTable dequeueReusableHeaderFooterViewWithIdentifier:SectionHeaderViewIdentifier];
Я не выполнять любые другие трудоёмкую задачу в загрузке ячейки/раздела.
Почему TableView инициализации заголовка раздела снова и снова, когда я использую reloadData и как я могу это исправить, так что будет быстрее
так что если моя таблица состоит из 50 разделов, и теперь я хочу изменить представление таблицы, чтобы состоять всего из 5 разделов с совершенно разными данными, мне нужно удалить 50 разделов и добавить 5 разделов? Я думаю, что этот метод займет еще больше времени. –
@ItaiCaspi Ну, да, есть крайности для всего. Но я буду повторять, что я подозреваю, что вы делаете некоторые неэффективные в своем «NowsHeadlineHeaderView», например, возможно, синхронную загрузку сетевых данных? – kamprath
Класс NowsHeadlineHeaderView очень прост, он имеет только 3 UILabels, которые я обновляю из массива. он также имеет 3 распознавателя жестов, которые настроены в блоке init. это оно. поэтому я совершенно уверен, что это не вызывает проблемы –