我正在使用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。您可以在情节提要上执行此操作:
- 选择所需的视图控制器;在顶部栏上,您应该看到三个按钮,一个代表视图控制器,另一个代表第一响应者,另一个代表出口。
- 按 Ctrl+从"视图控制器"按钮拖动到"退出"按钮。将出现一个上下文菜单,其中列出了您在情节提要上创建的所有可见的展开方法。
- 在文档大纲上,视图控制器将显示"展开 segue"。您可以向该 segue 添加标识符(例如在您的情况下为"登录")。然后调用 performSegueWithIdentifier。选择您在登录视图控制器上创建的那个。
这样,视图控制器和登录视图控制器之间的完整堆栈将被展开。也就是说,将弹出堆叠在登录管理器视图控制器上方的所有视图控制器。
您也可以使用 prepareForSegue 进行展开 segue,就像将它们用于常规 segue 一样。如果你想对 segue 执行某些操作,则可以向 -(IBAction) 方法添加代码。