0

У меня есть неприятная проблема. У меня есть UINavigationController с UITableView на панели «Мастер» (слева) моего UISplitViewController. Когда я выполняю нормальные операции, все нажимается на контроллер навигатора.UINavigationController + UITableView + UISearchBar + UISplitViewController

alt text http://files.droplr.com/files/8851942/WDO5y.working.jpg

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

alt text http://files.droplr.com/files/8851942/WDRem.search.jpg

Я хотел бы добавить, что хорошо работает, когда это делать в портретном (в контекстном меню) и на Iphone. Является ли это ошибкой UISplitViewController?

ответ

1

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

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

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

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

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

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

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

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

1

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

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