我在我的应用程序中使用了RESideMenu。但是我需要在RESideMenu之前添加登录和注册视图控制器。
有没有可能,如果有,我该怎么做呢?
提前谢谢。
发布于 2015-05-12 07:50:06
有很多方法可以做到这一点。最常见的情况是您有一个loginView控制器,然后在应用程序委托中,您可以在应用程序委托中编写类似以下内容:
if([[NSUserDefaults standardUserDefaults] valueForKey:@"AlreadyLogin"])
{
// So, here user already login then set your root view controller, let's say `SecondViewController``
SecondViewController *secondViewController = [storyBoard instantiateViewControllerWithIdentifier:@"SecondViewController"];
// then set your root view controller
self.window.rootViewController = secondViewController;
}
else
{
// It means you need to your root view controller is your login view controller, so let's create it
LoginViewController *loginViewController= [storyBoard instantiateViewControllerWithIdentifier:@"LoginViewController"];
self.window.rootViewController = loginViewController;
}发布于 2015-05-12 08:22:02
是的,这很有可能。
解决方案A:
成功登录/注册后,请执行以下操作:
[UIApplication sharedApplication].window.rootViewController = [[RESideMenu alloc] init...];解决方案B:
将登录/注册视图控制器放在RESideMenu的主要内容部分,并禁用两侧菜单,直到用户登录为止。
解决方案C:
将RESideMenu嵌入到UINavigationController中,也可以选择隐藏导航栏。
有关更多信息,我建议研究“视图控制器包含”,因为这是RESideMenu、UINavigationController和其他类型的“容器”视图控制器使用的模式。
我拼凑了一个解决方案C的快速示例,它似乎工作得很好:
@implementation LoginViewController
- (void)viewDidLoad {
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(50, 50, 100, 100);
[button setTitle:@"Login" forState:UIControlStateNormal];
[button addTarget:self action:@selector(goToRESideMenu) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
self.navigationController.navigationBarHidden = YES;
}
- (void)goToRESideMenu {
UIViewController *redViewController = [[UIViewController alloc] init];
redViewController.view.backgroundColor = [UIColor redColor];
UIViewController *greenViewController = [[UIViewController alloc] init];
greenViewController.view.backgroundColor = [UIColor greenColor];
UIViewController *blueViewController = [[UIViewController alloc] init];
blueViewController.view.backgroundColor = [UIColor blueColor];
RESideMenu *sideMenu = [[RESideMenu alloc] initWithContentViewController:redViewController
leftMenuViewController:greenViewController
rightMenuViewController:blueViewController];
[self.navigationController pushViewController:sideMenu animated:YES];
}
@end结果如下所示:

https://stackoverflow.com/questions/30174721
复制相似问题