Я использую navigationController? .PopToRootViewController (animated: true), чтобы отклонить мой текущий вид к предыдущему. Мои отношения с контроллером вида выглядят так.
VC1->VC2
VC1->VC3
VC3->VC2
Всякий раз, когда клиент находится в VC2, я хочу вернуть навигационный контроллер обратно в VC1. Это прекрасно работает, когда rootviewcontroller установлен на VC1. Однако, когда клиент использует переход из VC3 для входа в VC2, rootviewcontroller устанавливается на VC3, а контроллер навигации отображается на VC3.
Я попытался изменить контроллер rootview следующим образом.
// set root view controller
let appdelegate = UIApplication.shared.delegate as! AppDelegate
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let VC1 = mainStoryboard.instantiateViewController(withIdentifier: "VC1") as! FirstViewController
appdelegate.window!.rootViewController = VC1
navigationController?.popToRootViewController(animated: true)
Но на самом деле это возвращает контроллер представления корневому контроллеру представления (VC1) даже до того, как будет выполнена строка "navigationController? .PopToRootViewController (animated: true)", поэтому анимация отсутствует.
Есть ли способ установить контроллер rootview контроллера навигации без немедленного представления контроллера корневого представления?