我不知道它是否是一种常见的行为,或者我是否遗漏了某些东西,但是我的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
方法(找到标识符本身)但没有任何反应。
答案 0 :(得分:1)
这是常见的行为。
展开segue与普通segue不同。 Unwind Segue始终执行从当前视图控制器或源视图控制器到现有视图控制器的segue,该视图控制器已存在于导航堆栈中。它没有明确定义任何目标视图控制器。展开segue通过遍历导航层次结构在运行时搜索它的目标视图控制器。
因此,在您的情况下,定义segue的LoginViewController
在YES
中不会出现在导航层次结构中。出于这个原因,segue无法正常工作。