Iphone 如何在登录屏幕启动后显示选项卡栏控制器?
这是一个基于视图的应用程序 在delegate.m文件中,我这样做是为了最初启动登录屏幕:Iphone 如何在登录屏幕启动后显示选项卡栏控制器?,iphone,iphone-sdk-3.0,iphone-sdk-3.1.2,Iphone,Iphone Sdk 3.0,Iphone Sdk 3.1.2,这是一个基于视图的应用程序 在delegate.m文件中,我这样做是为了最初启动登录屏幕: - (void)applicationDidFinishLaunching:(UIApplication *)application { [window addSubview:viewController.view]; [window makeKeyAndVisible]; LoginView *loginView=[[LoginView alloc]initWithNibName:@"Lo
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview:viewController.view];
[window makeKeyAndVisible];
LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil];
[window addSubview:loginView.view];
}
通过添加上述代码,我成功地启动了登录屏幕,但在登录屏幕的底部,我可以看到一个空白
成功登录后如何启动选项卡栏控制器
我在LoginView.m文件中创建了一个名为login的方法:
-(void)login
{
if(login)
{
TabBarController *tabBarController = [[TabBarController alloc] initWithNibName:@"TabBarController" bundle:nil];
[self.view addSubView: aTabBarController.view];
}
[aTabBarController release];
请用适当的代码帮助我解决这个问题。您的登录视图(或者它的控制器,如果您有一个看起来没有的控制器)应该告诉appDelegate将RootViewController交换为taBarController。您不希望loginview尝试将tabBar添加为自己的子项。一种方法是在appdelegate中创建一个与普通一样的tabbarcontroller,并将其设置为rootviewcontroller:
TOTabBarController *tabBarController = [[TOTabBarController alloc] init];
UIViewController *vc1 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UIViewController *vc2 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UIViewController *vc3 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *vc2_nc = [[UINavigationController alloc] initWithRootViewController:vc2];
UINavigationController *vc3_nc = [[UINavigationController alloc] initWithRootViewController:vc3];
NSArray *viewControllers = [NSArray arrayWithObjects:vc1, vc2_nc, vc3_nc, nil];
[tabBarController setViewControllers:viewControllers];
//set tabbarcontroller as rootviewcontroller
[[self window] setRootViewController:tabBarController];
如果用户未登录,则以模式显示登录屏幕(无动画):
if (not logged in) {
UIViewController *lvc_nc = [[UIViewController alloc] init];
[[[self window] rootViewController] presentModalViewController:lvc_nc animated:NO];
}
希望有帮助 您必须在appDelegate中创建on方法,如。。在appDelegate.h中,您必须创建如下对象 UITabBarController*对象选项卡 然后在.m文件中
-(void) switchToTabbarController
{
Obj_tabbar.delegate = self;
Obj_tabbar.selectedIndex = 0;
Tracking_HomeVC *obj = [[Tracking_HomeVC alloc]init];
[self tabBarController:Obj_tabbar didSelectViewController:obj];
[self.window addSubview:Obj_tabbar.view];
}
//此时,Tracking_HomeVC是TabbarController的第一个视图控制器。它将被添加到窗口中
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
}
然后从你的登录视图中调用它,如
-(void)LoginPressed
{
AppAppDelegate *delegate =(AppAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate switchToTabbarController];
}
此问题可能重复:您需要接受对以前问题的回答,如果您不愿意接受他们的回答,那么人们就不愿意努力回答您的问题。请记住,在您的loginview控制器中,您会在用户登录后发送消息以关闭modalview:[self dismissModalView…]要在成功登录后关闭我的loginview,我需要做什么?我可以在我的方法中说[self.view removeFromSuperView],以及ModalView控制器的含义是什么?这是不必要的。当你关闭视图时,它会自动卸载该视图。在你的loginview控制器中,写[self dismissModalViewControllerAnimated:YES];当用户登录时。如果对您有效,您应该单击我的答案旁边的绿色复选标记或向上投票以接受答案。我已经按照您所说的做了,但是当运行应用程序时,它在delegate.M文件中显示错误,就像TabBar Controller未声明一样(首次使用此功能)。你能告诉我我做错了什么吗???
-(void)LoginPressed
{
AppAppDelegate *delegate =(AppAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate switchToTabbarController];
}