Я использую navigationController? .PopToRootViewController (animated: true), чтобы отклонить текущее представление до предыдущего. Мои отношения с контроллером представления выглядят так.
VC1->VC2
VC1->VC3
VC3->VC2
Когда клиент находится в VC2, я хочу вернуть контроллер навигации в VC1. Это отлично работает, когда rootviewcontroller установлен на VC1. Однако, когда клиент использует переход от VC3 для входа в VC2, rootviewcontroller устанавливается на VC3, а контроллер навигации выскакивает на VC3.
Я попытался изменить rootviewcontroller вот так.
// 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)», поэтому анимации нет.
Есть ли способ установить rootviewcontroller контроллера навигации, не представляя сразу корневой контроллер представления?