0

我正在使用 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];

你能帮我吗

谢谢你。

4

3 回答 3

0

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

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

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

于 2015-02-23T11:54:02.303 回答
0

你不能通过 pop 回到你的 LoginViewController。您可以添加不带动画的 PresentViewController 来执行此操作。

Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil];
[self presentViewController: vSplash animated:NO completion:nil];
于 2015-02-16T15:02:27.557 回答
0

您可以使用“Unwinding Segue”。unwinding segue 就像一个常规的 segue,它向后而不是向前。

首先,进入 Login View Controller 并添加以下方法:

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

该方法可以为空,并且可以有任何名称;最好使用描述性的名称,因为您的代码中可能有许多展开 segues,并且能够区分它们将很有用。

这个 unwind 方法将作为一个全局常量,对故事板上的所有视图控制器都是可见的。

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

  1. 选择你想要的视图控制器;在顶栏上,您应该看到三个按钮,一个代表 View Controller,另一个代表 First Responder,另一个代表 Exit。
  2. Ctrl+从 View Controller 按钮拖动到 Exit 按钮。将出现一个上下文菜单,并列出您在情节提要上创建的所有可见展开方法。
  3. 在 Document Outline 上,视图控制器会出现一个“Unwind segue”。您可以向该 segue 添加一个标识符(例如在您的情况下为“登录”)。然后调用 performSegueWithIdentifier。选择您在登录视图控制器上创建的那个。

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

您还可以将 prepareForSegue 用于展开转场,就像将它们用于常规转场一样。如果你想对 segue 做一些事情,你可以将代码添加到 -(IBAction) 方法中。

于 2016-01-26T17:11:26.733 回答