为什么我的 unwind segue 回溯得太远了?

Why does my unwind segue go back too far?

我正在尝试为我的应用程序的注册过程创建控制器架构。下面是当前状态的图像:

应用程序第一次从登录页面启动,如果用户单击 "SignUp",导航控制器将通过 self.presentViewController 模态显示。导航控制器然后推送通过视图控制器,然后推送到第二个视图控制器。在第二个视图控制器上,用户必须先按 "Go" 以模态导航到请求附加信息的视图控制器,然后再继续注册过程。一旦用户在这个模态呈现的控制器上输入了额外的信息,用户通过一个展开的 segue 按 "Go Back" 到 return 到第二个视图控制器。

但是,当按下此键时,展开转场 returns 到第二个视图控制器,但随后立即 returns 到 "Log In" 页面。看起来 unwind segue 弹出所有模态呈现的视图,即使 unwind 函数嵌套在第二个视图控制器中。

这是怎么回事,退回到第二个注册页面的解决方案是什么?

我遇到了同样的问题,它通常是由以下原因之一引起的:

  1. 使用已弃用的 segue
  2. 在用于展开的@IBAction 方法中调用viewController.dismissViewControllerAnimated。
  3. 将@IBAction 用于在错误的控制器中展开。 @IBAction 应该在您要放松到的控制器中。

解除 segue 的步骤

  1. 在 SecondSignupController 中创建一个 @IBAction 方法,此方法将在展开时调用。此方法应将 UIStoryboardSegue 作为参数示例 -> @IBAction func onUnwindFromModalPage(segue:UIStoryboardSegue){}。此方法的主要目的是传回数据(如果有),否则您可以将其留空。

  2. 按住 Control 从“返回”按钮拖动以退出情节提要中模态呈现的控制器中的符号。退出符号是选择控制器时控制器顶部的最后一个符号。这将向您显示您可以选择用于展开的@IBActions 列表。选择您在 SecondSignUpController 中创建的方法。