UINavigationController + UITableView + UISearchBar + UISplitViewController - PullRequest
0 голосов
/ 05 мая 2010

У меня раздражающая проблема. У меня есть UINavigationController с UITableView на главной панели (слева) моего UISplitViewController. Когда я выполняю обычные операции, все нормально работает с навигационным контроллером.

альтернативный текст http://files.droplr.com/files/8851942/WDO5y.working.jpg

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

альтернативный текст http://files.droplr.com/files/8851942/WDRem.search.jpg

Я должен добавить, что он отлично работает при портретной (во всплывающем меню) и на iphone. Это ошибка UISplitViewController?

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

ОК, я получил ваш ответ- [Я также разместил этот ответ на связанный вопрос] -

Вот шаги, которые работали для меня [содержащие некоторый псевдокод]:

1) Поскольку вы ищете, вы наверняка уже переопределите ShouldReloadForSearch - просто добавьте фрагмент кода, который сохраняет / сохраняет forSeachString.

2) Это может немного отличаться в зависимости от вашего приложения, но суть этого шага заключается в том, что вам нужно очистить сохраненную строку поиска [установить на нуль], если результаты поиска не загружены. Я сделал это в моем UITableViewSource. У меня есть 2 конструктора - один для полного набора данных, а другой для отфильтрованного набора данных [результатов поиска]. Поэтому я просто установил его в null в своем конструкторе полного набора данных. Да, вы могли бы сделать это по-другому, без сомнения, но я так и сделал.

3) Затем выполните первоначальное состояние «ответа» и вызовите SetActive - [self.searchDisplayController setActive:NO];. Они выступали за отмену ViewDidAppear. Я этого не делал ... Я сделал это сразу после того, как я нажал следующий UIViewController в моем RowSelected переопределении.

4) Наконец, в вашем UIViewController, к которому подключен UISearchDisplayController, проверьте сохраненную строку поиска и, если она существует, сделайте следующее: 1) снова вызовите SetActive, НО на этот раз с истинным параметром, т.е. setActive:YES ... затем 2) установите в тексте searchBar значение сохраненной строки поиска. Я сделал это в переопределении ViewWillAppear.

Короче говоря ... это сработало для меня И поддерживает результаты поиска. Установка текста панели поиска в шаге 4 является ключевым моментом ... это эффективно заставляет фильтр сохраняться.

Надеюсь, это кому-нибудь поможет

1 голос
/ 21 июня 2010

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

Наконец-то меня осенило, что контроллер отображения поиска не активен, [self.searchDisplayController setActive:NO];, когда представление исчезает, либо перезаписывая viewDidDisappear или viewWillDisappear. Теперь все, кажется, получает правильные рамки / границы, но вы теряете экран поиска при возврате назад. Если вы хотите, я думаю, вы можете сохранить состояние экрана поиска при выходе, а затем вернуть его при возвращении. Если вы нашли решение, другое решение, дайте мне знать.

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