在Tab栏控制器之前显示登录屏幕

时间:2011-12-15 04:20:48

标签: iphone iphone-sdk-3.0 uitabbarcontroller iphone-sdk-3.2

  

可能重复:
  show a login screen before Tab bar controller?

我正在设计一个应该首先显示登录屏幕的iphone应用程序,之后它应该显示带有5个选项卡的标签栏控制器。我最初能够启动登录界面,但在此之后无法显示标签栏控制器,请帮我解决源代码问题。这是我的代码:这是一个基于视图的应用程序

application.M

-(void)applicationDidFinishLaunching:(UIApplication *)application {    
// Override point for customization after app launch 
   [window addSubview:viewController.view]; 
   [window addSubview:tabBarController. view];   
   [window makeKeyAndVisible];
   LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil];
   [window addSubview:loginView.view];
}

查看controller.M

- (void)viewDidLoad
{   LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil];
    [self.view addSubview:loginView.view];

    [super viewDidLoad];
}

我做错了,登录屏幕后无法显示标签蝙蝠控制器。 当应用程序启动时,我可以在登录屏幕的最底部看到标签栏控制器。如何避免?????帮我代码 并且在点击登录按钮后,如何解除loginview以及如何加载标签栏控制器???

4 个答案:

答案 0 :(得分:4)

为什么不设置窗口添加UITabBarController,然后在需要登录时显示登录视图作为模态视图控制器。

-(void)applicationDidFinishLaunching:(UIApplication *)application
{    
  // Override point for customization after app launch 

  [window addSubview:tabBarController. view];   
  [window makeKeyAndVisible];
  LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil];
  [tabBarController.view presentModelViewcontroller: loginView animated:YES];
  }

答案 1 :(得分:3)

请勿在此处添加标签栏

-(void)applicationDidFinishLaunching:(UIApplication *)application {    
// Override point for customization after app launch 
   [window addSubview:viewController.view]; 
   //[window addSubview:tabBarController. view];   
   [window makeKeyAndVisible];
   LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil];
   [window addSubview:loginView.view];
}

登录完成后,您应该在LoginView中添加标签栏。例如

在Login.m文件中

- (void) doLogin
{
  if(login)
  {
     TabBarController *aTabBarController = [[TabBarController alloc] initWithNibName:@"TabBarController" bundle:nil];
     [self.navigationController pushViewController:aTabBarController animated:YES]; OR
     [self.view addSubView: aTabBarController.view];
     [aTabBarController release];    
  }
}

答案 2 :(得分:2)

您可以考虑使用其他方法来实现登录屏幕。您应该在应用程序委托中的主视图上显示选项卡栏控制器,并在应用程序委托中设置BOOL值以跟踪用户是否已登录。如果该值为false,则将登录屏幕显示为使用标签栏控制器中的presentModalViewController:的新视图控制器。 在iPhone应用程序中,标签栏成为应用程序的索引,它应始终显示在主视图中。并将登录屏幕视为仅为登出的人显示的门。

答案 3 :(得分:2)

执行以下步骤 -

  1. 如果选择基于视图的应用程序,则打开main(root).xib,其中更改xib的ViewController属性选择登录视图控制器。
  2. 类名作为登录视图控制器。
  3. 在AppDelegate文件中,将主(根)viewController替换为登录视图控制器。
  4. 在登录视图控制器中创建一个登录按钮。

  5. - (IBAction为)loginButtonPressed:(ID)发送方    {      SampleViewController * sampleVC = [[SampleViewController alloc] initWithNibName:@“SampleViewController”bundle:nil];    [self presentModalViewController:sampleVC animated:YES];    }

相关问题