我需要一直回到呈现第一个导航控制器的视图控制器。然而,我并没有立刻解雇多个控制器,而且当我尝试这样做时,它并没有起作用。它只是转到第一个导航控制器,而不是一直到它之前的那个。
这是我目前的代码:
[(UINavigationController *)self.presentingViewController popViewControllerAnimated:NO];
[self dismissViewControllerAnimated:YES completion:nil];
我有一个视图控制器,它以模态方式呈现第一个导航控制器。第一个导航控制器屏幕称为主视图控制器。然后它推送到Login View Controller。 Login View Controller会将MenuController传递给MenuViewController(UIViewController)。
我需要从MenuViewController一直返回到呈现第一个导航控制器的视图。感谢。
答案 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];