我想知道是否有任何方法可以从UIViewController返回,比如后退3-4步,我有一个主屏幕,它将通过presentModalViewController导航到其他UIViewController,在下一个视图中,它将有一个UINavigationBar,它将导航到4-5级深度。我想放一个按钮,让用户直接回到家,而不是返回他输入的所有视图。
提前进行thx检查。
发布于 2012-01-14 06:18:21
让您的根级视图控制器注册为通知的观察者,例如"POP_TO_ROOT“。当它收到这个通知时,调用一个方法来关闭你的模式视图控制器(或堆栈中的第一个)。
在您的视图控制器堆栈中,中的任何4级或5级视图都可以发布一个通知"POP_TO_ROOT“。
代码编辑:添加
在调用presentModalViewController之前,在主“屏幕”中执行以下操作:
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(handlePopToRoot) 
                                                 name:@"POP_TO_ROOT"
                                               object:nil];并添加此方法:
 - (void) handlePopToRoot {
     [[NotificationCenter defaultCenter] removeObserver:self 
                                                   name:@"POP_TO_ROOT" 
                                                 object:nil];
     [self.navigationController dismissModalViewControllerAnimated: YES]; 
 }然后,在视图控制器层次结构的深层,当您想要全部弹出时,您只需要发布一个通知:
 [[NSNotificationCenter defaultCenter] postNotification:@"POP_TO_ROOT" object:nil];发布于 2012-01-14 05:48:10
将根View Controller保存在某个属性中,并调用:
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
发布于 2012-01-14 05:53:39
如果我没理解错的话,您正在从您的“主视图控制器”中呈现一个导航控制器(带有一个附加到它的根视图控制器),并且您希望能够返回到您的“主视图控制器”。
因为您总是有指向导航控制器的指针,所以您应该能够从任何视图控制器调用dismissModalViewControllerAnimated:,它会将您直接带回到主视图控制器。
    [[self.navigationController parentViewController] dismissModalViewControllerAnimated:YES]https://stackoverflow.com/questions/8857498
复制相似问题