2010-01-03 54 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

相关问题