我正在尝试为我的应用程序的注册过程创建 Controller 架构。下面是当前状态的图像:
该应用程序第一次从登录页面启动,如果用户点击“注册”,导航 Controller 将通过 self.presentViewController
模态呈现。导航 Controller 然后推送通过 View Controller ,然后推送到第二个 View Controller 。在第二个 View Controller 上,用户必须先按“Go”以模态导航到请求附加信息的 View Controller ,然后再继续注册过程。一旦用户在这个模态呈现的 Controller 上输入了额外的信息,用户按下“返回”以通过展开转场返回到第二个 View Controller 。
但是,当按下此按钮时,展开转场返回到第二个 View Controller ,但随后立即返回到“登录”页面。看起来 unwind segue 弹出所有模态呈现的 View ,即使 unwind 函数嵌套在第二个 View Controller 中。
这是怎么回事,展开到第二个注册页面的解决方案是什么?
最佳答案
我遇到了同样的问题,这通常是由以下原因之一引起的:
- 使用已弃用的 segue
- 在用于展开的@IBAction 方法中调用 viewController.dismissViewControllerAnimated。
- 将@IBAction 用于在错误的 Controller 中展开。 @IBAction 应该在您要放松到的 Controller 中。
解除segue的步骤
在 SecondSignupController 中创建一个 @IBAction 方法,此方法将在展开时调用。此方法应将 UIStoryboardSegue 作为参数示例 -> @IBAction func onUnwindFromModalPage(segue:UIStoryboardSegue){}。此方法的主要目的是传回数据(如果有),否则您可以将其留空。
按住 Control 从“返回”按钮拖动到 Storyboard中模态呈现 Controller 中的退出符号。退出符号是选择 Controller 时 Controller 顶部的最后一个符号。这将向您显示您可以选择用于展开的@IBActions 列表。选择您在 SecondSignUpController 中创建的方法。
关于ios - 为什么我的 unwind segue 回溯得太远了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181577/