一次性解除视图控制器

时间:2014-10-08 04:25:34

标签: ios objective-c iphone xcode

我需要一直回到呈现第一个导航控制器的视图控制器。然而,我并没有立刻解雇多个控制器,而且当我尝试这样做时,它并没有起作用。它只是转到第一个导航控制器,而不是一直到它之前的那个。

这是我目前的代码:

[(UINavigationController *)self.presentingViewController  popViewControllerAnimated:NO];
[self dismissViewControllerAnimated:YES completion:nil];

我有一个视图控制器,它以模态方式呈现第一个导航控制器。第一个导航控制器屏幕称为主视图控制器。然后它推送到Login View Controller。 Login View Controller会将MenuController传递给MenuViewController(UIViewController)。

我需要从MenuViewController一直返回到呈现第一个导航控制器的视图。感谢。

2 个答案:

答案 0 :(得分:2)

试试这个

UIViewController *vc = self;
while (vc.presentingViewController != nil) {
    vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:YES completion:nil];

答案 1 :(得分:0)

一种选择是使用NSNotifications。

您可以在第一个/ root /初始UINavigationController子类中添加一个观察者,例如

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(logout:)
                                                 name:@"LogoutNotification"
                                               object:nil];

然后在你的“logout:”方法中,你可以直接控制初始的UINavigationController而不是层次结构中的那些。

然后,您可以从应用中的任何位置发送NSNotification以触发该方法。

e.g。

[[NSNotificationCenter defaultCenter] postNotificationName:@"LogoutNotification" object:self];