2011-12-15 90 views
1

可能重复:
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以及如何加载标签栏控制器?

+0

你需要接受的答案你前面的问题,令人沮丧的人把精力回答你的问题,如果你不能打扰接受他们的答案。 – 2011-12-15 11:17:45

回答

2

做以下步骤 -

  1. 如果选择查看基于应用程序,然后打开主(根)的.xib在更改视图控制器属性厦门国际银行选择登录视图控制器。
  2. 作为登录视图控制器的类名称。
  3. 在AppDelegate文件中,替换main(root)viewController以登录视图控制器。
  4. 在登录视图控制器中创建登录按钮。

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

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]; 
    } 
+0

是的,模态视图控制器是处理它的正确方法,但是您可以将`animated`参数设置为NO,以便它在屏幕上,并在应用启动时随时可用。 – Darren 2011-12-15 05:41:00

2

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

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];  
    } 
} 
+0

我可以将UI标签栏控制器声明为Iboutlet。 – 2011-12-15 05:20:05