Подтвердить что ты не робот

Popping ViewController на Swift

Мне нужно вывести UIViewController из контроллера навигации.

Просто написать эту строку кода, но исключение:

неожиданно найдено нуль при развертывании необязательного значения

self.navigationController.popViewControllerAnimated(true)

Если я сделаю контроллер навигации дополнительным, эта строка не будет действовать, не будет появляться

self.navigationController?.popViewControllerAnimated(true)

Как его решить?

4b9b3361

Ответ 1

Вам необходимо правильно развернуть свой навигационный контроллер.

if let navController = self.navigationController {
    navController.popViewController(animated: true)
}

Ответ 2

Swift 3.0 Это работает для меня

_ = self.navigationController?.popViewController(анимированный: true)

введите описание изображения здесь

Ответ 3

В моем случае я использую представление "Мастер-данные" (Split View Controller). Контроллер просмотра моих деталей встроен в контроллер навигации. Поэтому, когда я хотел уволить мой контроллер просмотра деталей. Мне пришлось вытащить его из контроллера навигации родительского контроллера (Split view) Вот так.

_ = self.navigationController?.navigationController?.popViewController(animated: true)

надеюсь, что это поможет кому-то.

Ответ 4

Кажется, что контроллер просмотра, с которым вы работаете, не встроен в навигационный контроллер. Если был контроллер навигации, т.е. self.navigationController не равен нулю, обе строки должны работать так же хорошо, хотя последний предпочтительнее, поскольку он использует необязательную цепочку.

Убедитесь, что вы встроили контроллер View в контроллер навигации. Вы можете сделать это, выбрав "Редактор представлений" в редакторе раскадровки и нажав "Редактор → Вставить → Контроллер навигации". Также убедитесь, что у вас есть точка входа в Storyboard (стрелка, указывающая, какой контроллер представления представлен в первую очередь), либо указав на контроллер навигации, либо перед ним.