【问题标题】:Dismiss to RootViewController?解雇 RootViewController?
【发布时间】:2012-05-02 09:31:07
【问题描述】:

我有一个 RegistrationViewController 和一个 LoginViewController:

LoginViewController 是我的 InitialViewController/RootViewController。

如果我注册并单击注册按钮,它将自动推送到 MainViewController。如果我按下 Logout-Button,它就会消失到 RegistrationViewController,这是因为我使用 [self dismissModalViewController animated:YES]。

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

如果我按下注销按钮,我如何关闭 LoginViewController。

【问题讨论】:

    标签: iphone ios xcode


    【解决方案1】:
    -(void)dismissToRootViewController
    {
        UIViewController *vc = self;
        while (vc.presentingViewController) {
            vc = vc.presentingViewController;
        }
        [vc dismissViewControllerAnimated:YES completion:nil];
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 UINavigationController 方法-popToRootViewControllerAnimated:

      - (IBAction)logoutPressed:(id)sender {
          [self.navigationController popToRootViewControllerAnimated:YES];
      }
      

      如果您是在讨论多个模态视图一个接一个地呈现,您可以通过将-dismissViewControllerAnimated:completion: 或较旧的-dismissModalViewControllerAnimated: 发送到堆栈中最低的一个来消除所有这些视图,如文档:

      如果你连续呈现几个视图控制器,从而构建一个 呈现的视图控制器堆栈,在视图上调用此方法 堆栈中较低的控制器关闭其直接子视图 控制器和堆栈上该子级上方的所有视图控制器。 发生这种情况时,只有最顶层的视图会在动画中消失 时尚

      【讨论】:

      • sry 伙计们,我忘了提到登录和注册是模态视图。所以这段代码不起作用
      • @Bashud 编辑解释在模态视图控制器的情况下应该做什么。但是,您的问题确实说“推送”,这意味着它们被推送到导航堆栈上。这就是为什么我最初专注于从导航堆栈中弹出。
      【解决方案3】:

      试试吧,对我有用。

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

      【讨论】:

        【解决方案4】:

        如果您使用 UINavigationController 使用 View Controller 堆栈,使用以下方法是明智的。

        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];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-24
          • 1970-01-01
          • 1970-01-01
          • 2013-03-25
          • 2018-11-04
          • 2013-09-06
          相关资源
          最近更新 更多