viewControllers没有出现

时间:2015-06-10 20:02:50

标签: ios objective-c uiviewcontroller

我有一个问题要问你: 我有一组UIViewController附加到self.tabBarController.viewControllers 我还有一个单独的应该是登录scree只出现一次(你第一次打开应用程序),我希望加载那个以防用户没有登录,否则或之后用户登录后,它将加载我拥有的完整self.tabBarController.viewControllers。 这是代码:

-(void)load_login_view{
    NSLog(@"map");
    UIViewController * fb_login = [[FacebookLoginView alloc]init];
    fb_login.title = @"fsf ss";
    UINavigationController * fb_login_navigation = [[UINavigationController alloc] initWithRootViewController:fb_login];
    [fb_login_navigation.tabBarItem setImage:[UIImage imageNamed:@"eventi.png"]];
}



- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    BOOL login_status = [defaults objectForKey:@"login_status"];


    UIViewController * secondpage = [[SecondViewController alloc]init];
    secondpage.title = @"second";
    UINavigationController * secondpage_navigation = [[UINavigationController alloc] initWithRootViewController:secondpage];
    [secondpage_navigation.tabBarItem setImage:[UIImage imageNamed:@"eventi.png"]];



    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[secondpage_navigation];
    self.window.rootViewController = self.tabBarController;


    if(!login_status){
        [self load_login_view];
    }else{

    }

    [self.window makeKeyAndVisible];

}

1 个答案:

答案 0 :(得分:1)

你有很多方法可以做到这一点。有几个例子。

  1. 使用您当前的导航流程
  2. - >如果用户未登录,您可以将登录视图控制器显示为模态,以便它将位于tabBarController的顶部。      //类似的东西

        -(void)load_login_view{
        UIViewController * fb_login = [[FacebookLoginView alloc]init];
                    fb_login.title = @"fsf ss";
    
        UINavigationController * fb_login_navigation = [[UINavigationController alloc] initWithRootViewController:fb_login];
    
        [self.window.rootViewController presentViewController:fb_login_navigation animated:NO completion:nil];
    
        }
    

    - >当您登录用户时,请关闭登录控制器。如果需要,请保存下次用户数据

    - >如果需要,做一些工作来更新TabBarcontroller中的选定控制器。

    1. 更改导航流程
    2. - >将UINavigationController与登录控制器([[UINavigationController alloc] initWithRootViewController:fb_login])一起用作应用程序的rootController

      UIViewController * fb_login = [[FacebookLoginView alloc]init];
      fb_login.title = @"fsf ss";
      UINavigationController * fb_login_navigation = [[UINavigationController alloc] initWithRootViewController:fb_login];
      self.window.rootViewController  = fb_login_navigation;
      

      - >记录用户时,请按TabBarcontroller。如果需要,请保存下次用户数据

      //inside fb_login controller ( you can optimize the code, it's just a quick example)
      
      UIViewController * secondpage = [[SecondViewController alloc]init];
      secondpage.title = @"second";
      UINavigationController * secondpage_navigation = [[UINavigationController alloc] initWithRootViewController:secondpage];
      [secondpage_navigation.tabBarItem setImage:[UIImage imageNamed:@"eventi.png"]];
      self.tabBarController = [[UITabBarController alloc] init];
      self.tabBarController.viewControllers = @[secondpage_navigation];
      [self.navigationController pushViewController:tabBarController animated:YES];
      

      - >要避免双重导航栏(fb_login_navigation / secondpage_navigation),您可以在需要时隐藏fb_login_navigation的导航。

      - >下次,如果用户被记录,您可以在加载登录控制器后触发上面的代码,而不是等待用户输入他的凭据。

      希望它有所帮助。