【问题标题】:RESideMenu: Add new viewcontrollers before RESideMenuRESideMenu:在 RESideMenu 之前添加新的视图控制器
【发布时间】:2015-05-11 18:11:51
【问题描述】:

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

有可能吗,如果可以,我该怎么做?

提前致谢。

【问题讨论】:

  • 我会在它上面添加一个模态视图控制器。在我看来,构建登录视图是最佳实践。

标签: ios iphone residemenu


【解决方案1】:

有很多方法可以做到这一点。最常见的是您有一个 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;
}

信用:Skip view if user already logged

【讨论】:

    【解决方案2】:

    是的,很有可能。

    解决方案 A:

    成功登录/注册后,执行:

    [UIApplication sharedApplication].window.rootViewController = [[RESideMenu alloc] init...];
    

    解决方案 B:

    将您的登录/注册视图控制器放在RESideMenu 的主要内容部分,并在用户登录之前禁用两个侧边菜单。

    解决方案 C:

    RESideMenu 嵌入UINavigationController 并可选择隐藏导航栏。

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

    我整理了一个解决方案 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
    

    结果如下:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多