Поведение searchDisplayController.searchResultsTableView внутри логики UINavigationController - PullRequest
2 голосов
/ 07 января 2010

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

Теперь оба табличных представления действуют внутри контроллера навигации. Если я выберу один элемент в представлении таблицы результатов поиска, в стек навигации будет помещен новый контроллер uitableview (с конкретной информацией о выбранном элементе). Когда я нажимаю кнопку «Назад» на этом контроллере, я наблюдаю странное поведение: заголовки разделов обычного табличного представления перекрывают заголовки разделов моего табличного представления результатов поиска. Они отображаются так, как будто отображается мое обычное табличное представление (я вижу это по количеству строк между заголовками, хотя строки остаются пустыми). Строки таблицы результатов поиска по-прежнему отображаются.

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

(self.tableView == self.searchDisplayController.searchResultsTableView)

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

Вопрос: как я могу опросить правильное состояние моего табличного представления, чтобы избежать ошибок отображения?

1 Ответ

11 голосов
/ 07 января 2010

Класс UISearchDisplayController реализует свойство active. Угадай, для чего он используется: -)

например. просто проверьте на (self.searchDisplayController.active) или ([self.searchDisplayController isActive]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...