Ответ 1
Вам необходимо правильно развернуть свой навигационный контроллер.
if let navController = self.navigationController {
navController.popViewController(animated: true)
}
Мне нужно вывести UIViewController из контроллера навигации.
Просто написать эту строку кода, но исключение:
неожиданно найдено нуль при развертывании необязательного значения
self.navigationController.popViewControllerAnimated(true)
Если я сделаю контроллер навигации дополнительным, эта строка не будет действовать, не будет появляться
self.navigationController?.popViewControllerAnimated(true)
Как его решить?
Вам необходимо правильно развернуть свой навигационный контроллер.
if let navController = self.navigationController {
navController.popViewController(animated: true)
}
Swift 3.0 Это работает для меня
_ = self.navigationController?.popViewController(анимированный: true)
В моем случае я использую представление "Мастер-данные" (Split View Controller). Контроллер просмотра моих деталей встроен в контроллер навигации. Поэтому, когда я хотел уволить мой контроллер просмотра деталей. Мне пришлось вытащить его из контроллера навигации родительского контроллера (Split view) Вот так.
_ = self.navigationController?.navigationController?.popViewController(animated: true)
надеюсь, что это поможет кому-то.
Кажется, что контроллер просмотра, с которым вы работаете, не встроен в навигационный контроллер. Если был контроллер навигации, т.е. self.navigationController
не равен нулю, обе строки должны работать так же хорошо, хотя последний предпочтительнее, поскольку он использует необязательную цепочку.
Убедитесь, что вы встроили контроллер View в контроллер навигации. Вы можете сделать это, выбрав "Редактор представлений" в редакторе раскадровки и нажав "Редактор → Вставить → Контроллер навигации". Также убедитесь, что у вас есть точка входа в Storyboard (стрелка, указывающая, какой контроллер представления представлен в первую очередь), либо указав на контроллер навигации, либо перед ним.