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.

displaysSearchBarInNavigationBar се настройва доста лесно. Но единствената следа, която имам за navigationItem, е следната:

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

Изглежда не мога да намеря пример за това как да настроя навигационния елемент. Как да кажа на моята навигационна лента да вгради моята лента за търсене? Някой може ли да ми покаже пример?

Благодаря ви предварително!


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


Отговори (1)


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

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

person MyztikJenz    schedule 25.09.2013
comment
Благодаря ви за отделеното време! Но трябва да има нещо, което не разбрах, защото изглежда не работи толкова лесно, колкото описвате. От моя работещ код на ios6, освен изтриването на моя UISearchBar и настройването на displaysSearchBarInNavigationBar на true, имам ли нужда от други части от код? Например, трябва ли да поставя ръчно лениво създадената лента за търсене в лентата за навигация или всичко е магия? Благодаря ви предварително! - person NLemay; 26.09.2013
comment
Навигационният контролер ще поиска от най-горния изглед контролер за своя навигационен елемент. Ако този контролер за изглед има контролер за показване на търсене и displaysSearchBarInNavigationBar е ДА, ние използваме навигационната лента с активирана лента за търсене, която идва от контролера за показване на търсене. И не искате да изтриете лентата за търсене, просто я премахнете от йерархията... лентата все още трябва да съществува. - person MyztikJenz; 26.09.2013
comment
Ако продължавате да имате проблем, подаването на грешка с малък тестов случай (и публикуването на номера на радара тук) би било изключително полезно. - person MyztikJenz; 26.09.2013