2015-04-03 146 views
0

我有一个密码视图控制器,它总是在应用程序被激活时呈现。呈现两个视图控制器,解散正确的视图控制器

我有另一个视图控制器,它是一个按钮的点击。在这里有一个过程要显示,一旦完成就自行解散。

的方案是:

1)提出这种观点位指示,过程开始。

2)在此过程完成之前,请按主页按钮。

3)现在再次打开应用程序。

4)提供密码视图控制器,因为它是强制性的。

5)此时在步骤1中开始的过程完成。解雇方法被调用。但密码视图控制器被取消而不是此过程VC。

如何解雇特定的VC?

**Edit:** 

我对此尝试了不同的方法。当我从appdelegate展示passcodeVC时,我创建一个新的导航并将其设置为rootViewController。之前的导航存储在参考中。在这里,我成功保持了密码视图。密码视图现在不被解雇。

当用户输入密码时,我再次将rootviewcontroller更改为旧的。我认为这会起作用。但是,事实并非如此。 MailVc被解雇。当我尝试再次展示mailVC时,它说this is already presented.

好像,因为我更改了rootVC,然后当它不存在于视图中时调用dissmissVC。 有人可以解释我这个。

谢谢。

+0

您是否尝试委托模式?此外,对于做的过程不作为控制器呈现,或者如果你这样做,只是应用程序进入后台并关闭进度控制器时保存进度。 – Retro 2015-04-07 05:46:37

+0

是的。我使用委托解决了这个问题。但我想知道编辑的问题。为何发生这种情况当视图不在窗口的根目录并且调用解除时。视图被解雇。但后来当我尝试再次呈现时,它说已经呈现。即使我创建了该类的新实例来呈现。 – Durgaprasad 2015-04-07 06:26:50

+0

作为根控制器,rootVC已经呈现了视图,因此当您在更改rootVC之前重新设置视图时,只需关闭进度VC或正如我在应用程序进入后台时告诉您的那样。 – Retro 2015-04-07 06:31:52

回答

0

解除当前视图控制器之前,您可以测试其类型。如果是kindOfClass(YourPasswordViewController),请不要关闭它。否则,消除。

从你的UIViewController进行计算并取消当前的UIViewController,请执行以下操作。

获取实例到您的UINavigationController。获得viewControllers财产。这是一个NSArray。访问最后的UIViewController并测试它是否是PasswordUIViewController的对象。如果是,那就不要放弃它。

+0

好的。但是如何找到这个视图控制器。 navCtrl具有viewcontrollers属性,可以提供推送的视图。如何获得展示视图。 – Durgaprasad 2015-04-03 13:10:11

+0

@Durgaprasad更新我的答案。让我知道你是否有任何困惑 – 2015-04-03 13:15:37

+0

当我访问nav.viewcontrollers时,我得到了homeVc和mailVc数组。我没有看到控制器。有两个呈现的vc,即mailVc和passcodeVC。 – Durgaprasad 2015-04-06 07:17:35

相关问题