Как правильно повернуть и изменить UITableView, когда он находится в режиме ввода-поиска-текста? - PullRequest
0 голосов
/ 14 сентября 2011

Я реализую UITableViewController, который отображает одну ячейку в портретном режиме и две ячейки в ландшафтном режиме.Я успешно использую ячейки с определителями.Кроме того, у меня есть флаг для проверки нечетного количества записей и отображения правильного количества записей (опуская правую ячейку в альбомном режиме).Также я использую поле поиска.

Теперь у меня все работает: таблица корректно вращается, поиск корректно фильтрует записи.Проблема возникает в ситуациях, связанных с enter-search-text + rotate, например: я запускаю приложение, таблица заполняется записями.Затем я ввожу некоторый текст в поле поиска, затем фильтрую записи и перезагружаю таблицу в «textDidChange».Таблица успешно фильтрует 3 записи.Теперь я перехожу в альбомный режим, когда в режиме ввода текста поиска.Но теперь в таблице отображаются только 2 записи.

Все проблемы начинаются, когда я начинаю вращаться в режиме ввода-поиска-текста.Таблица пропускает некоторые записи, пропускает некоторые правые ячейки в альбомном режиме.Я не знаю, почему он ведет себя так, потому что я вызываю «[self.tableView reloadData]» в методах «textDidChange» и «shouldAutorotateToInterfaceOrientation».Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Я нашел решение в этом ( сообщение ).Похоже, что есть два разных tableView для отображения строк в таблице: один для self.tableView в режиме по умолчанию и другой для «self.searchDisplayController.searchResultsTableView» (если вы используете контроллер поиска).Итак, я исправил свою проблему с этим кодом:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{

  if ([self.searchDisplayController isActive]){
    [self.searchDisplayController.searchResultsTableView reloadData];
  } else{
    [self.tableView reloadData];
  }
}
0 голосов
/ 14 сентября 2011

Используете ли вы разные файлы .xib?Также это плохой способ написания кода в shouldAutorotateToInterfaceOrientation, вместо этого используйте didRotateToInterfaceOrientation:.

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