Кнопка отмены UISearchDisplayController не обновляет заголовки и индекс

У меня есть представление таблицы с длинным списком строк. Для каждого раздела есть заголовки, указатель справа и кнопка поиска. Это было реализовано программно с использованием UISearchDisplayController (т.е. не в IB).

Когда кнопка поиска активирована, я скрываю заголовки (в titleForHeaderInSection) и скрываю индекс (в sectionIndexTitlesForTableView), спрашивая
if ([self.searchDisplayController isActive])

Проблема в том, что при нажатии кнопки отмены заголовки и индекс сначала остаются скрытыми. Я пытался (в searchBarCancelButtonClicked) позвонить [self.tableView reloadData], но это не работает.

У меня есть [self.tableView reloadData] в моем viewWillAppear, что помогает в одном случае: если я выбираю строку, помещаю в стек другое представление, а затем возвращаюсь к этой таблице, заголовки и индекс там, как и хотелось.

Что я могу делать неправильно?


person coco    schedule 11.02.2011    source источник


Ответы (1)


Я обнаружил, что иногда, когда [tableView reloadData] не работает, это будет:

[tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0];

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

person Bogatyr    schedule 11.02.2011
comment
Пожалуйста! А также иногда, когда вы хотите сделать анимацию вставки/удаления строки вместе с перезагрузкой, установите задержку больше нуля (0,3 хорошо работает), потому что reloadData отменит анимацию, которую я нашел. - person Bogatyr; 14.02.2011