iOS7: как установить свойство navigationItem для UISearchDisplayController?

У меня есть UISearchDisplayController, который отлично работает в одном из моих приложений для iOS6. Теперь я хочу перенести это приложение на iOS7.

Я прочитал документы Apple, и там говорится следующее:

Starting in iOS 7.0, you can use a search display 
controller with a navigation bar (an instance of 
the UINavigationBar class) by configuring the 
search display controller’s displaysSearchBarInNavigationBar 
and navigationItem properties.

displaySearchBarInNavigationBar довольно легко настроить. Но единственная подсказка, которая у меня есть для navigationItem, заключается в следующем:

Important: The system raises an exception if you 
attempt to set the titleView property for a search 
display controller’s navigation item.

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

Заранее спасибо!


person NLemay    schedule 24.09.2013    source источник


Ответы (1)


UISearchDisplayController создает и управляет элементом навигации, необходимым для отображения панели поиска на панели навигации. Вам не нужно создавать свой собственный, хотя вы можете получить к нему доступ через searchDisplayController.navigationItem после того, как displaysSearchBarInNavigationBar было установлено значение YES (навигационный элемент создается лениво)

Когда у контроллера представления с контроллером отображения поиска запрашивается его navigationItem, контроллер отображения поиска вернет свой элемент (который содержит строку поиска) вместо контроллера представления.

person MyztikJenz    schedule 25.09.2013
comment
Спасибо за ваше время! Но должно быть что-то, чего я не понял, потому что это не работает так просто, как вы описываете. Из моего рабочего кода ios6, помимо удаления моего UISearchBar и установки для displaySearchBarInNavigationBar значения true, нужны ли мне другие фрагменты кода? Например, мне нужно вручную поместить лениво созданную панель поиска в панель навигации, или это все магия? Заранее спасибо! - person NLemay; 26.09.2013
comment
Контроллер навигации запросит у самого верхнего контроллера представления его элемент навигации. Если этот контроллер представления имеет контроллер отображения поиска и displaysSearchBarInNavigationBar имеет значение YES, мы используем панель навигации с поддержкой панели поиска, которая исходит от контроллера отображения поиска. И вы не хотите удалять панель поиска, просто удалите ее из иерархии... панель все еще должна существовать. - person MyztikJenz; 26.09.2013
comment
Если у вас по-прежнему возникают проблемы, было бы очень полезно зарегистрировать ошибку с помощью небольшого тестового примера (и разместить здесь номер радара). - person MyztikJenz; 26.09.2013