首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESideMenu:在RESideMenu之前添加新的视图控制器

RESideMenu:在RESideMenu之前添加新的视图控制器
EN

Stack Overflow用户
提问于 2015-05-12 02:11:51
回答 2查看 773关注 0票数 1

我在我的应用程序中使用了RESideMenu。但是我需要在RESideMenu之前添加登录和注册视图控制器。

有没有可能,如果有,我该怎么做呢?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-05-12 07:50:06

有很多方法可以做到这一点。最常见的情况是您有一个loginView控制器,然后在应用程序委托中,您可以在应用程序委托中编写类似以下内容:

代码语言:javascript
复制
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;
}

图片来源:Skip view if user already logged

票数 0
EN

Stack Overflow用户

发布于 2015-05-12 08:22:02

是的,这很有可能。

解决方案A:

成功登录/注册后,请执行以下操作:

代码语言:javascript
复制
[UIApplication sharedApplication].window.rootViewController = [[RESideMenu alloc] init...];

解决方案B:

将登录/注册视图控制器放在RESideMenu的主要内容部分,并禁用两侧菜单,直到用户登录为止。

解决方案C:

RESideMenu嵌入到UINavigationController中,也可以选择隐藏导航栏。

有关更多信息,我建议研究“视图控制器包含”,因为这是RESideMenuUINavigationController和其他类型的“容器”视图控制器使用的模式。

我拼凑了一个解决方案C的快速示例,它似乎工作得很好:

代码语言:javascript
复制
@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

结果如下所示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30174721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档