我想知道是否有任何方式可以从UIViewController
返回,例如向后退3-4步,我有一个主屏幕,可以通过UIViewController
导航到其他presentModalViewController
,在下一个视图中,它将有一个UINavigationBar
,它将导航到4-5级深度。我想放一个让用户直接回到家中的按钮,而无需返回他输入的所有视图。
答案 0 :(得分:1)
让根级别视图控制器注册为通知的观察者,例如“POP_TO_ROOT”。当它收到此通知时,调用一个方法来关闭你的模态视图控制器(或堆栈中的第一个)。
在你的viewcontroller堆栈中,任何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];
}
然后,深入你的viewcontroller层次结构,当你想要一直弹出时, 你只需要发布通知:
[[NSNotificationCenter defaultCenter] postNotification:@"POP_TO_ROOT" object:nil];
答案 1 :(得分:0)
将根视图控制器保存在某个属性中并调用:
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
答案 2 :(得分:0)
如果我正确理解了您的问题,您将从“主视图控制器”模式呈现导航控制器(附有根视图控制器),并且您希望能够返回到“主视图控制器” ”
因为您将始终拥有指向导航控制器的指针,所以您应该可以调用
来自任何视图控制器的dismissModalViewControllerAnimated:
,它将直接返回主视图控制器。
[[self.navigationController parentViewController] dismissModalViewControllerAnimated:YES]