назначение пользовательского места назначения для popToRootViewController swift 4 - PullRequest
0 голосов
/ 29 июня 2018

Я использую 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 контроллера навигации без немедленного представления контроллера корневого представления?

1 Ответ

0 голосов
/ 29 июня 2018

Если вы положили appdelegate.window!.rootViewController = VC1, стек контроллеров умер, у вас в стеке только один контроллер, поэтому вы не можете применить popToRootViewController.

Если это требуемая навигация, возможно, эта запись поможет вам: enter image description here

...