2012-03-05 5 views
3

В настоящее время я разрабатываю приложение с помощью UINavigationController. Я установил контроллер корневого представления в ViewController1, а затем нажмите ViewController2, а затем ViewController3 в ответ на события нажатия кнопки.Кнопка «Назад» исчезает после нажатия двух видов с помощью UINavigationController

Если я затем нажмите кнопку «Назад» из окна 3, я вернусь, чтобы посмотреть 2, но в этом представлении нет кнопки «Назад». Интересно также, установив заголовки для каждого из этих представлений («Вид 1», «Вид 2» и «Вид 3» соответственно), если я перейду от просмотра 3 назад к представлению 2 с помощью кнопки «Назад», название изменится на « View 1 ', то есть заголовок для начального вида (вид 1) - не заголовок для просмотра 2.

Если кто-нибудь знает, что может происходить здесь, ваши предложения очень ценятся.

Большое спасибо заранее!

Edit: Я использую следующий код, чтобы инициализировать UINavigationController в приложение делегата:

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds]]; 
self.viewController1 = [[ViewController1 alloc] init]; 
self.viewController2 = [[ViewController2 alloc] init]; 
self.viewController3 = [[ViewController3 alloc] init]; 
self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController1]; 
self.window.rootViewController = self.navigationController; 

я потом толкать контроллеры просмотра к UINavigationController на нажатия кнопок следующим образом:

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate]; 
[self.navigationController pushViewController:appDelegate.viewController2 animated:YES]; 
+0

можете ли вы разместить немного кода? Также, используя «переход от 3 до 2», вы имеете в виду, используя кнопку «Назад»? Или вы используете какой-то другой метод? – Damo

+0

Hi Damo - да, я использую кнопку «Назад» для перехода от 3 до 2. Я отредактировал свое оригинальное сообщение, чтобы включить код, который я использую для нажатия на контроллеры представлений. Благодарю. – rwbutler

+0

Итак, в объектах viewController вы устанавливаете элемент кнопки левой панели навигации - например - self.navigationItem.backBarButtonItem = ** summat **? Вы говорите, что есть кнопка «назад», но, похоже, она исчезает - это правильно? – Damo

ответ

1

Я нашел решение - в viewController2 и viewController3 У меня был следующий код, чтобы скрыть панель навигации (я хотел, чтобы панель навигации была скрыта на view1, а затем видна на представлениях 2 и 3).

- (void) viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
    [super viewWillAppear:animated]; 
} 

- (void) viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
    [super viewWillDisappear:animated]; 
} 

я понял, что это делает гораздо больше смысла делать обратное в viewController1 т.е.

- (void) viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
    [super viewWillAppear:animated]; 
} 

- (void) viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
    [super viewWillDisappear:animated]; 
} 

и затем удаляя предыдущий код из поля зрения регуляторов 2 и 3. Это решало проблему.

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