0

Я создаю массив контроллеров представлений, добавляя их в контроллер UINavigation, а затем представляя их в виде модально.Навигационный контроллер «кнопка« назад »: Представлено Модифицировано

Однако я не могу установить текст на кнопку «назад» в каждом представлении на все, кроме слова «назад».

Это код:

//The View Controllers and Array 
VC1 *vc1 = [[VC1 alloc] initWithNibName:@"VC1" bundle:nil]; 
VC2 *vc2 = [[VC2 alloc] initWithNibName:@"VC2" bundle:nil]; 
VC3 *vc3 = [[VC3 alloc] initWithNibName:@"VC3" bundle:nil]; 
NSArray * viewControllers = [NSArray arrayWithObjects:vc3, vc2, vc1, nil]; 

// Create the nav controller and set the view controllers. 
UINavigationController* theNavController = [[UINavigationController alloc] 
initWithRootViewController:vc3]; 
[theNavController setViewControllers:viewControllers animated:NO]; 

// Display the nav controller modally. 
[self presentModalViewController:theNavController animated:YES]; 

Я попытался следующие в инициализации каждого VC:

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init]; 
barButton.title = @"Acknowledge Briefings Read"; 
self.navigationItem.backBarButtonItem = barButton; 

... но она не работает. Есть идеи? Большое спасибо.

Кроме того, в связи с этим мне идеально хотелось бы перемещаться по стеку в направлении «вперед». Возможно ли это с помощью навигационного контроллера?

ответ

0

В инициализации вы не можете сделать ничего видимого. Вам нужно дождаться viewDidLoad (или willAppear или didAppear), поскольку в init ничего не было (в случае навигационного контроллера будет затронут предыдущий элемент).

Вот что я делаю (в viewDidLoad):

UIBarButtonItem *doneButon = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneButtonPressed)]; 
[self.navigationItem setRightBarButtonItem:doneButon]; 
+0

Привет, Адам, спасибо. Знаете ли вы, как я использовал бы этот подход для перехода к следующему контроллеру представления в стеке контроллера навигации? –

1

Эй, это может работать для вас:

self.navigationController.navigationBar.backItem.title = @"Acknowledge Briefings Read"; 

Этот код должен идти в ViewController, которая в настоящее время видна. Вы должны добавить его в viewWillApear

Приветствиях

+0

Спасибо! Это сработало. –

+0

Ohh Отлично, если хотите, вы можете принять ответ ...: P – Nilesh

0

Кнопка тест обратно автоматически устанавливается в заголовке атрибута UIViewController, который находится на вершине стека. Таким образом, в представлении viewDidAppear или viewDidLoad каждого контроллера представления задайте self.title текст, который вы хотите отобразить на кнопке «Назад», когда новое представление будет перенесено в стек.

+0

Спасибо. Знаете ли вы, как заставить кнопку nab появляться справа от экрана? Я хочу показать пользователю, что он перемещается вперед через стек VC ... в тот момент, когда в левой части экрана появляется кнопка nab. –

+0

@LeeBarringer. Вы должны действительно прочитать Руководство по программированию View Controller для понимания проектирования вашего приложения. –

+1

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

Смежные вопросы