Pop SWRevealViewController



我正在使用SWRevealViewController来构建一个滑动菜单。在访问菜单之前,将显示登录视图以允许用户登录。现在我想让用户断开连接并再次显示登录视图。我的问题是如何弹出SWRevealViewController。

登录后提供对应用程序的访问权限的代码是:

MainViewController *vMainMenu = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    vMainMenu.strURL = URL;
    LeftMenu *vLeftMenu = [[LeftMenu alloc] initWithNibName:@"LeftMenu" bundle:nil];
    UINavigationController *principalNavController = [[UINavigationController alloc] initWithRootViewController:vMainMenu];
    UINavigationController *rearNavController = [[UINavigationController alloc] initWithRootViewController:vLeftMenu];
    SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavController frontViewController:principalNavController];
    mainRevealController.delegate = self;
    self.viewController = mainRevealController;
    principalNavController.navigationBar.hidden = YES;
    rearNavController.navigationBar.hidden = YES;
    self.window.rootViewController = self.viewController;

此解决方案不起作用:

[self.revealViewController.navigationController popViewControllerAnimated:YES];
Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil];
[self.navigationController pushViewController:vSplash animated:YES];

你能帮我吗

谢谢。

您无法通过弹出返回 LoginViewController 。您可以添加不带动画的 PresentViewController 来执行此操作。

Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil];
[self presentViewController: vSplash animated:NO completion:nil];

我遇到了同样的问题。我已经实现了几个故事板。

        let storyboard = UIStoryboard(name: "Login", bundle: nil)
        let startcontroller = storyboard.instantiateViewControllerWithIdentifier("LoginVC") as UIViewController
        window?.rootViewController = startcontroller

使用此代码段,您可以访问正确的视图控制器。

您可以使用"展开 Segue"。展开的 segue 就像一个常规的 segue,它向后而不是向前。

首先,转到登录视图控制器并添加以下方法:

-(IBAction)unwindToLoginScreen:(UIStoryboardSegue *)segue {
}

该方法可以是空的,它可以有任何名称;最好使用描述性名称,因为代码上可能有许多展开的 segue,能够区分它们会很有用。

此展开方法将充当全局常量,对情节提要上的所有视图控制器都可见。

现在,在每个应该能够返回登录屏幕的视图控制器上,您可以创建一个展开 Segue。您可以在情节提要上执行此操作:

  1. 选择所需的视图控制器;在顶部栏上,您应该看到三个按钮,一个代表视图控制器,另一个代表第一响应者,另一个代表出口。
  2. 按 Ctrl+从"视图控制器"按钮拖动到"退出"按钮。将出现一个上下文菜单,其中列出了您在情节提要上创建的所有可见的展开方法。
  3. 在文档大纲上,视图控制器将显示"展开 segue"。您可以向该 segue 添加标识符(例如在您的情况下为"登录")。然后调用 performSegueWithIdentifier。选择您在登录视图控制器上创建的那个。

这样,视图控制器和登录视图控制器之间的完整堆栈将被展开。也就是说,将弹出堆叠在登录管理器视图控制器上方的所有视图控制器。

您也可以使用 prepareForSegue 进行展开 segue,就像将它们用于常规 segue 一样。如果你想对 segue 执行某些操作,则可以向 -(IBAction) 方法添加代码。

相关内容

  • 没有找到相关文章

最新更新