我有一个问题要问你: 我有一组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];
}
答案 0 :(得分: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;
- >记录用户时,请按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
的导航。
- >下次,如果用户被记录,您可以在加载登录控制器后触发上面的代码,而不是等待用户输入他的凭据。
希望它有所帮助。