2015-10-17 41 views
3

我正在尝试为我的应用程序的注册过程创建控制器体系结构。下面是当前状态的图像:为什么我的放松继续回到太远?

Controller Architecture

该应用程序开始于登录页面的第一时间,如果用户点击“注册”,导航控制器经由模态呈现self.presentViewController。然后导航控制器通过一个视图控制器,然后推送到第二个视图控制器。在此第二个视图控制器上,用户必须先按下“Go”才能以模态方式导航到请求附加信息的视图控制器,然后再继续注册过程。一旦用户在这个模态呈现的控制器上输入了额外的信息,用户按下“返回”以通过展开顺序返回到第二视图控制器。

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

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

+0

只是在我尝试重现此操作之前进行检查:所以展开函数仅出现在第二页视图控制器代码中? - 这是iOS 9吗?在iOS 9中,unwind segues的行为发生了很大变化,因此知道这一点很重要。 – matt

+0

是的,它只出现在第二页视图,这是iOS 9. –

回答

8

我有同样的问题,它通常是由以下原因造成:

  1. 使用过时赛格瑞
  2. 调用viewController.dismissViewControllerAnimated用于放松身心的@IBAction方法内。
  3. 将@IBAction用于在错误的控制器中展开。 @IBAction应该在你想放松的控制器中。

步骤放松身心的赛格瑞

  1. 创建SecondSignupController的@IBAction方法,这种方法将在开卷被调用。此方法应以UIStoryboardSegue作为参数示例 - > @IBAction func onUnwindFromModalPage(segue:UIStoryboardSegue){}。此方法的主要目的是传回数据,否则您可以将其保留为空。

  2. Control-Drag from Go-Back button to exit symbol in the Modally Presented Controller in storyboard。退出符号是选择控制器时控制器顶部的最后一个符号。这将向您展示您可以选择放松的@IBActions列表。选择您在SecondSignUpController中创建的方法。

+0

是的,OP在两个阶段看到这一事实让我怀疑他是否有其他代码导致额外的展开。 – matt

+0

@wakeupsumo不幸的是,我遵循创建segue的确切步骤。我敢肯定,你提出的任何可能的原因都不适用于我的情况。 –

+0

当我删除用于在第二个视图控制器中展开的@IBAction时,按回退按钮不会执行任何操作。它只是停留在模态控制器上。 –

相关问题