2015-06-10 103 views
0

我有一個問題給你: 我有一套UIViewController附加到self.tabBarController.viewControllers 和我有另一個單獨應該是登錄scree只出現一次(你第一次打開應用程序),我希望加載,以防萬一用戶沒有登錄,否則或之後,用戶登錄,它會加載我有完整的self.tabBarController.viewControllers。 下面是代碼: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

你有很多方法可以做到這一點。有幾個例子。

  1. 根據您當前的導航流程

- >如果用戶沒有登錄,則可以顯示你的登錄視圖控制器模式,因此會在你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中選定的控制器。

  • 更改導航流
  • - >使用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; 
    

    - 當>你的用戶被記錄下來,推送到你的TabBar控制器。如果需要的話,保存用戶數據,下一次

    //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導航需要的時候。

    - >下一次,如果用戶登錄,您可以在加載登錄控制器後啓動上面的代碼,而不是等待用戶輸入他的憑據。

    希望它有幫助。