Iphone 如何在登录屏幕启动后显示选项卡栏控制器?

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

这是一个基于视图的应用程序

在delegate.m文件中,我这样做是为了最初启动登录屏幕:

- (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];    
}