iphone: добавить UIBarButtonItem в UINavigationItem.leftBarButtonItem UIViewController - слабый? - PullRequest
0 голосов
/ 24 мая 2011

Я использую в своем приложении контроллер панели вкладок, а под первой вкладкой находится контроллер навигации.

В корневом представлении стека навигационных контроллеров отображается панель поиска для пользователя, где он может вводить текст. Закончив ввод, пользователь запускает поисковую службу нашего сайта. Во время выполнения поиска я хочу показать некоторую «информацию о состоянии», поэтому я помещаю другой стек представления (statusInfoController) в стек навигационного контроллера.

После того, как поиск завершен (это занимает до 10 с), контроллер таблицы результатов помещается в стек навигационных контроллеров.

Теперь я хочу показать некоторую кнопку назад в uinavigationbar, которая возвращает пользователя к контроллеру корневого представления. Я сделал следующее в viewWillAppear -методе контроллера таблицы результатов:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Zurück21" 
                                                                   style:UIBarButtonItemStyleBordered
                                                                  target:self
                                                                  action:@selector(popBackToFirstView)];

    self.navigationItem.leftBarButtonItem = backButton;
    UIBarButtonItem *backButton2 = [[UIBarButtonItem alloc] initWithTitle:@"Zurück22" 
                                                                   style:UIBarButtonItemStylePlain
                                                                  target:nil
                                                                  action:nil];
    self.navigationItem.backBarButtonItem = backButton2;
    self.navigationItem.title = [self.lastSearch suchAnfrage];

    [backButton release];
    backButton = nil;
    [backButton2 release];
    backButton2 = nil;

и я реализовал popBackToFirstView -метод в этом классе. Существует также второе UIBarButtonItem присвоение свойству backBarButtonItem для detailView (которое помещается в стек навигационного контроллера, когда пользователь касается какой-либо записи в просмотре таблицы результатов).

Моя проблема : все кнопки «назад», которые начинаются с self.navigationItem.backBarButtonItem, имеют стрелку слева, но кнопка, назначенная self.navigationItem.leftBarButtonItem, является обычной кнопкой, без стрелки.

Как мне добавить стрелку к «специальной» кнопке «Назад»? Какой стиль я должен использовать?

Или я должен использовать стандартные кнопки назад? Но тогда должен быть какой-то другой способ «перепрыгнуть» через StatusInfoController-View?

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Вы ищете неправильное решение.

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

0 голосов
/ 24 мая 2011

Я думаю, что функция стрелки назад - это интегрированная часть, позволяющая SDK контролировать использование навигационной панели.

Единственное решение - если бы вы могли так его называть - это написать собственный класс панели навигации в качестве подкласса UIViewController (используйте NIB, чтобы упростить его), и тогда у вас будет вся гибкость, которую вы мог хотеть.

...