1

У меня есть контроллер просмотра навигации A, который ведет к контроллеру B, а затем к контроллеру C. Контроллер B - это экран входа в систему, поэтому, как только пользователь входит в систему, пользователь получает запрос на контроллер C. То, что я изначально хотел сделать, это иметь кнопку «Назад» на контроллере C, вернуть пользователя обратно в контроллер A (поскольку пользователь уже зарегистрирован, нет смысла использовать кнопку «Назад») обратно к контроллеру B, который является экраном входа). Я преуспел в этом, кроме одной специфической ошибки, которую я не могу исправить. При переходе от контроллера C к контроллеру A кнопка «Назад» добавляется в навигационную панель контроллера A! У контроллера никогда не было заднего бара для начала, это сводит меня с ума!Задняя кнопка создается на моем контроллере просмотра навигации, не в состоянии скрыть ее

Я попытался вводом во все следующем коде в методе viewWillAppear:

self.navigationItem.backBarButtonItem = nil; 
self.navigationItem.hidesBackButton = YES; 
[self.navigationItem setHidesBackButton:YES]; 

Ни один из них не отнимает кнопку назад! Я не знаю, что делать, любые предложения/помощь будут очень признательны, я все еще ноб.

+0

Как вы их отбираете обратно в контроллер A? – random

+0

В контроллере CI есть следующий код, чтобы вернуть их - (void) viewWillDisappear: (BOOL) анимированный { if ([self.navigationController.viewControllers indexOfObject: self] == NSNotFound) { [self.navigationController popToRootViewControllerAnimated: YES ]; } [super viewWillDisappear: animated]; } – AyBayBay

ответ

0

Не устанавливайте popToRoot в методе viewWillDisappear. Я предполагаю, что у вас есть функция, которая вызывается, когда пользователь все делается с процессом регистрации в контроллере C. В конце этого метода вам нужно поместить [self.navigationController popToRootViewControllerAnimated:YES]

Собирает в viewWillDisappear и особенно перед методом [super viewWillDissappear] является скорее всего, вызывает проблему.

EDIT:

Попробуйте структурировать ваш метод viewWillDisappear, как это, с супер вызова первого:

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

EDIT:

Ну, я получил его рода работы. Если вам не нужно нажимать на него больше просмотров после того, как вы вышли из Controller C, это сработает. Обновите -viewWillDisappear в контроллере C, чтобы выглядеть так:

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    [self.navigationController setViewControllers:@[[self.navigationController.viewControllers objectAtIndex:0]] animated:YES]; 
} 
+0

В контроллере C нет процесса регистрации, то есть в контроллере B, где пользователь входит в систему. В контроллере CI просто пытается получить «назад», но на панели навигации верните пользователя в контроллер A, когда пользователь нажимает на него. Мне удалось это сделать, выполнив код выше, но я явно сделал что-то не так, потому что кнопка возврата теперь отображается и на View Controller A. Где я должен поместить этот код, если не в методе viewWillDisappear, это единственный способ, которым я смог успешно вернуться к корню до сих пор. – AyBayBay

+0

Oooo Я вижу, что вы пытаетесь сделать сейчас. Попробуйте структурировать ваше сообщение viewWillDisappear (см. Обновленный ответ). – random

+0

@AyBayBay Я обновил свой ответ, посмотрю, работает ли это для вас – random