如果storyboard initialviewcontroller已更改,则视图控制器将丢失展开segue

时间:2018-02-06 11:30:37

标签: ios storyboard segue ios11 xcode9

我不知道它是否是一种常见的行为,或者我是否遗漏了某些东西,但是我的viewController中无法执行展开segue,如果定义了segue的视图控制器&它#39;不在层次结构中。为了使自己清楚:

1)在AppDelegate我根据简单条件更改了initialviewcontroller,如果我记录的用户。

if (user.isLogged()) {
  skipLogin()
}

2)如果是,则跳过LoginViewController(定义展开segue的那个)并转到MainViewController。如果没有任何变化,因为LoginViewController是故事板的默认initialViewController。

window = UIWindow(frame: UIScreen.main.bounds)
let vc = storyboard.instantiateViewController(withIdentifier: "main")
window?.rootViewController = vc
window?.makeKeyAndVisible()

3)当我在主视图控制器中触发注销操作时,调用performSegue方法(找到标识符本身)但没有任何反应。

1 个答案:

答案 0 :(得分:1)

这是常见的行为。

展开segue与普通segue不同。 Unwind Segue始终执行从当前视图控制器或源视图控制器到现有视图控制器的segue,该视图控制器已存在于导航堆栈中。它没有明确定义任何目标视图控制器。展开segue通过遍历导航层次结构在运行时搜索它的目标视图控制器。

因此,在您的情况下,定义segue的LoginViewControllerYES中不会出现在导航层次结构中。出于这个原因,segue无法正常工作。