我有一个RegistrationViewController和一个LoginViewController:
LoginViewController是我的InitialViewController / RootViewController。
如果我注册并单击Registrate-Button,它将自动推送到MainViewController。如果我按下Logout-Button,它会关闭到RegisterViewController,这是因为我使用[self dismissModalViewController animated:YES]。
- (IBAction)logoutPressed:(id)sender {
[self dismissModalViewControllerAnimated:YES];
}
如果我按下Logout-Button,我如何解除对LoginViewController。
答案 0 :(得分:5)
您可以使用UINavigationController方法-popToRootViewControllerAnimated:
。
- (IBAction)logoutPressed:(id)sender {
[self.navigationController popToRootViewControllerAnimated:YES];
}
如果您正在谈论一个在另一个上面呈现的几个模态视图,您可以通过将-dismissViewControllerAnimated:completion:
或较旧的-dismissModalViewControllerAnimated:
发送到堆栈中最低的一个来解除所有这些视图,如文档中所述:
如果你连续出现几个视图控制器,那么建立一个 堆栈的呈现视图控制器,在视图上调用此方法 堆栈中较低的控制器会解除其直接的子视图 控制器和堆栈上该子节点上方的所有视图控制器。 发生这种情况时,只有最顶层的视图在动画中被解除 时尚
答案 1 :(得分:4)
-(void)dismissToRootViewController
{
UIViewController *vc = self;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:YES completion:nil];
}
答案 2 :(得分:3)
试试吧,为我工作。
[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil];
答案 3 :(得分:0)
如果您使用UINavigationController使用堆栈视图控制器,那么使用以下方法是明智的。
1. Pop the current top ViewController use
[[self navigationController] popViewControllerAnimated:YES];
2. Pop to RootViewController use
[[self navigationController] popToRootViewControllerAnimated:YES];
3. For that matter popping to any ViewController use
[[self navigationController] popToViewController:viewController animated:YES];