2011-12-15 99 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

相關問題