为什么我的放松赛道会回到太远?

时间:2015-10-17 00:56:46

标签: ios xcode swift unwind-segue

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

Controller Architecture

应用程序首次在登录页面启动,如果用户单击“SignUp”,则会通过self.presentViewController以模态方式显示导航控制器。然后导航控制器推动视图控制器,然后推送到第二视图控制器。在该第二视图控制器上,用户必须首先按“开始”以模式导航到在继续注册过程之前请求附加信息的视图控制器。一旦用户在该模态呈现的控制器上输入附加信息,用户按下“返回”以通过展开segue返回到第二视图控制器。

然而,当按下此按钮时,展开segue返回到第二个视图控制器,但随后立即返回“登录”页面。即使展开函数嵌套在第二个视图控制器中,看起来unwind segue也会弹出所有模态呈现的视图。

发生了什么以及解开第二个注册页面的解决方案是什么?

1 个答案:

答案 0 :(得分:8)

我有同样的问题,这通常是由以下原因之一引起的:

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

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

    2. 控制 - 从Go-Back按钮拖动到故事板中Modally Presented Controller中的退出符号。选择控制器时,退出符号是控制器顶部的最后一个符号。这将显示您可以选择放松的@IBActions列表。选择您在SecondSignUpController中创建的方法。