好久不寫了,今天給大家分享一下登錄界面,經理說不登錄不讓進入個人中心,雖然不麻煩,但是感覺坑挺多(可能我是菜鳥的原因)。后臺還沒做出來,展示的只是本地數據,這些都不重要,主要的效果。。。廢話不多說,先看下效果!
5.gif
就是這種效果,可能我是個菜鳥,所以碰到比較坑的東西,不多說,上代碼!
我們想到達這個效果,首先判斷用戶是否登錄來攔截點擊tabBarItem
//這是UITabBarController的代理方法<UITabBarControllerDelegate>
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if (viewController == [tabBarController.viewControllers objectAtIndex:4]) {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults objectForKey:@"phoneNum"] == nil) {
JYJ_LoginViewController *login = [[JYJ_LoginViewController alloc]init];
//隱藏tabBar
login.hidesBottomBarWhenPushed = YES;
self.tabBar.hidden = YES;
[(UINavigationController *)tabBarController.selectedViewController pushViewController:login animated:YES];
self.hidesBottomBarWhenPushed = NO;
return NO;
}else {
return YES;
}
}else {
return YES;
}
}
當我寫到點擊登錄直接要跳轉個人中心的時候碰到坑了,怎么回事呢?我們繼續
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.passwordTextField.text forKey:@"phoneNum"];
[userDefaults setObject:self.passwordTextField.text forKey:@"password"];
[userDefaults synchronize];
MainTabBarController *tab = (MainTabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
[JYJ_AlertView createHUDLabelText:@"登錄成功" showView:[UIApplication sharedApplication].keyWindow alertType:0];
//跳到指定的頁面
tab.selectedIndex = 4;
確實這么寫也是跳到了指定頁面!但是.....新的坑再洗出現 ,看一下效果。
6.gif
很明顯大家也看出來怎么回事了,就是說登錄頁面還會在你選擇的VC出現一次,這怎么辦呢?想了很長時間終于破解了!!
在我們點擊登錄的時候最后一句話是這樣的
//跳到指定的頁面
tab.selectedIndex = 4;
在這句話后面再加一段代碼
[self removeFromParentViewController]; //我的理解是這樣的,在進入指定VC后,把父類的VC移除了,所以他不會出現在你選擇VC的視圖中了。(后加)調試中還是發現了bug,所以干脆就放棄這種效果了。不懂的可以問問我
等待后臺準備測試。希望對大家有所幫助。