2010-01-03 72 views
1

我需要能夠繞過在XCode中選擇導航控制器項目類型時獲得的默認RootViewController。我需要這個,因爲我想根據應用程序是否已經配置而走另一條路徑(如果沒有,請註冊/登錄屏幕)。有人可以指向一個例子,在AppDelegate中,NavigationController通過代碼連接到另一個控制器(在本例中爲SignupController)?如何在代碼中設置導航控制器 - >根視圖(iPhone SDK)

這是我的,但它不讓我改變標題。在MainWindow.xib中,它仍然綁定到默認的RootViewController中。

(void)applicationDidFinishLaunching:(UIApplication *)application {  
    [[UIApplication sharedApplication] 
    // if no config, load up the SignupController 

    SignupController* signupController = [[SignupController alloc] initWithNibName:@"SignupController" bundle:nil]; 
    [window addSubview:[navigationController view]]; 
    [window makeKeyAndVisible]; 

回答

2

你可以做這樣的事情:

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    if(hasConfig) { 
     [window addSubview:[navigationController view]]; 
    } else { 
     SignupController *signupController = [[SignupController alloc] initWithNibName:@"SignupController" bundle:nil]; 
     [window addSubview:signupController.view]; 
     [signupController release]; 
    } 
    [window makeKeyAndVisible]; 

變得尷尬切換回導航控制器登錄一次即可完成。 (假設您正在顯示登錄屏幕。)

爲什麼不使用模態控制器?

在你RootViewController.m

- (void)viewDidAppear { 
    [super viewDidAppear]; 

    if(notLoggedIn) { 
     SignupController *signupController = [[SignupController alloc] initWithNibName:@"SignupController" bundle:nil]; 

     [self presentModalViewController: signupController animated:YES]; 
     [signupController release]; 
    } 
} 

SignupController.m

- (void)didSignInOk { 
    //this will dismiss the sign in screen 
    [self.parentViewController dismissModalViewController]; 
} 
+0

我喜歡的導航控制器,因爲我有一個嚮導式設置。不過,我想我會聽取你的建議,並嘗試讓莫代爾爲我工作。 – 2010-01-03 15:08:05

+0

模態視圖控制器也可以是UINavigationController。我已經在幾個應用程序中完成了此操作。 – bentford 2010-01-04 07:18:28

相關問題