2015-09-20 3 views
0

Установка:Отключить вернуться к предыдущему контроллеру вид навигации контроллера

После регистрации от SignUpViewController вы идете к PostsViewController. Они подключены через show segue, поэтому внутри панели навигации автоматически создается кнопка < SignUp.

Проблема:

Я хочу, чтобы скрыть эту кнопку, потому что вы никогда не должны были бы вернуться к SignUpViewController, если вы не вышли из системы. Я думал, что удаление диспетчера представлений из стека навигации выполнит задание. Я сделал следующее:

NSArray *navVCs = [self.navigationController viewControllers]; 
for (UIViewController *vc in navVCs) { 
    if ([vc isKindOfClass:[SignUpViewController class]]) { 
     [vc removeFromParentViewController]; 
    } 
} 

Я проверил, что SignUpViewController был правильно удален из навигации стека, но он по-прежнему не удаляет кнопку назад.

Я также попытался установить

self.navigationItem.hidesBackButton = YES; 
self.navigationController.navigationBar.userInteractionEnabled = NO; 
self.navigationItem.backBarButtonItem = nil; 
self.navigationItem.leftBarButtonItem = nil; 

и ни один из них не удалить кнопку < SignUp из панели навигации внутри PostsViewController.

Решение:

Я смотрел всюду на StackOverflow, и я удивлен, что я не мог найти ответ. Заранее спасибо за вашу помощь!

+0

Можете ли вы представить вид регистрации модально, а затем перейти к просмотру сообщений, который будет первым контроллером представления, встроенным в контроллер навигации? – Gordonium

+0

Прямо сейчас, 'SignUpViewController' является первым контроллером представления. –

+1

Да. Но вы можете отделить его от контроллера просмотра сообщений, чтобы не было segue, и он не встроен в контроллер nav. После того, как они вошли в систему, перейдите к контроллеру сообщений вручную (вместо использования segue) и убедитесь, что контроллер сообщений является первым, встроенным в навигационный контроллер. – Gordonium

ответ

2

Вместо того, чтобы отключить кнопку «Назад», я бы рекомендовал рассмотреть последовательность проектирования контроллеров.

Вместо перехода, как это:

NavController -> Регистрация -> Сообщения

Попробуйте что-то вроде этого

Signup || NavController> Должности

Если вид регистрации больше не подключен через segue к контроллеру nav.

Вы можете обнаружить при запуске приложения, если необходим экран регистрации, и если он присутствует в нем (или, если хотите). Когда пользователь завершит регистрацию, вы можете создать экземпляр контроллера сообщений, который встроен в контроллер nav, а не переходить на него. Таким образом, для возврата к предыдущей и без обратной кнопки не будет предыдущего режима регистрации.

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