大家 我有一个问题,我一直在寻找解决方案,但找不到任何问题。我正在开发基于标签栏的应用程序。问题是我想在第一个屏幕上隐藏标签栏,然后在第一个屏幕后显示的所有其他屏幕上显示它。 有谁能请给我这个问题的最佳解决方案?
实际情况是我有一个登录屏幕。现在我不想在此处显示标签栏,因为只有在用户登录时才会显示标签栏。当用户登录时,我希望显示标签栏以显示其内容。
最好的问候
答案 0 :(得分:5)
如果您的标签栏控制器为rootController
,则可以使用rootController.selectedIndex =0
选择第一个标签栏项目,rootController.selectedIndex =1;
等等。
只要加载该特定视图,您就可以加载数组中的其他视图,然后将其添加到带有动画的rootController.selectedIndex
和reloadInputViews
。
修改(根据评论)
因此,您有一个标签栏控制器,并且您希望在启动应用程序时显示简介和登录屏幕。如果登录成功,您想要显示标签栏控制器!这可以使用ModalViewControllers
在首先加载的视图的ViewDidLoad
中(默认情况下它是您的第一个标签页),添加
//Declare Introduction Screen//
IntroductionController *introductionController = [[IntroductionController alloc] initWithNibName:@"IntroductionController" bundle:[NSBundle mainBundle]];
//Give a navigation screen for your introduction screen and set it to introduction screen
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:introductionController];
navController.title = @"Introduction";
navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navController animated:NO];
现在,只要第一个标签栏加载,您的介绍屏幕就会加载。但是加载是瞬时的,因此用户的眼睛看不到它。现在引用您的登录视图控制器,如@class LoginController
,并创建一个对象LoginViewController *lvc;
,并进行综合。现在声明LoginButton
并在IBAction
-(IBAction) loginAction: (id) sender{
NSLog(@"I clicked Login");
if (self.lvc ==nil){
self.lvc = [[LoginController alloc] init ];
}
lvc.title = @"Login";
[self.navigationController pushViewController: self.lvc animated:YES];
}
在LoginViewController
中,如果登录成功,只需执行
[self dismissModalViewControllerAnimated:YES];
答案 1 :(得分:-2)
为uitabbar创建一个插座,然后将其声明隐藏在第一个屏幕中,然后创建一个新的空白,而不是因为它在第一个屏幕中没有工作,让它说,让我们说,隐藏。在里面隐藏,把代码说成你的uitabbar.hidden = YES;然后,为了使其在另一个视图中工作,请在viewDidLoad:
中写下它 [(//first view*)[UIApplication sharedApplication].delegate //the void, in this case, hide];