Iphone 解除对RootViewController的请求?

Iphone 解除对RootViewController的请求?,iphone,ios,xcode,Iphone,Ios,Xcode,我有一个RegistrationViewController和一个LoginViewController: LoginViewController是我的InitialViewController/RootViewController 如果我注册并单击注册按钮,它将自动推送到MainViewController。如果我按下注销按钮,它将被注销到RegistrationViewController,这是因为我使用[self dismissModalViewController:YES] - (I

我有一个RegistrationViewController和一个LoginViewController:

LoginViewController是我的InitialViewController/RootViewController

如果我注册并单击注册按钮,它将自动推送到MainViewController。如果我按下注销按钮,它将被注销到RegistrationViewController,这是因为我使用[self dismissModalViewController:YES]

  - (IBAction)logoutPressed:(id)sender {
  [self dismissModalViewControllerAnimated:YES];
   }

如果我按下注销按钮,如何解除登录查看控制器。

您可以使用UINavigationController方法
-poptrootviewcontrolleranimated:

- (IBAction)logoutPressed:(id)sender {
    [self.navigationController popToRootViewControllerAnimated:YES];
}
如果您说的是几个模式视图一个接一个地显示,您可以通过将
-dismissViewControllerAnimated:completion:
或较旧的
-dismissModalViewControllerAnimated:
发送到堆栈中最低的一个来取消所有模式视图,如文档所述:

如果连续显示多个视图控制器,则会生成 显示的视图控制器堆栈,在视图上调用此方法 堆栈中较低的控制器取消其直接子视图 控制器和堆栈上该子级上方的所有视图控制器。 发生这种情况时,在动画视图中只有最顶部的视图被取消 时尚


如果您正在使用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];
试试看,对我有用

 [[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil];

sry伙计们,我忘了提到登录和注册都是Modalview。所以这段代码没有work@Bashud编辑以解释在模态视图控制器的情况下要执行的操作。然而,您的问题确实说了“push”,这意味着它们被推到了导航堆栈上。这就是为什么我最初专注于从导航堆栈中弹出。
 [[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil];