在应用启动时将视图添加到导航控制器

时间:2010-07-27 10:46:21

标签: iphone cocoa-touch uinavigationcontroller uitabbarcontroller

我的应用程序有UITabBarController,其中一个标签是为导航控制器配置的。

基于某些逻辑,我需要在应用程序启动时将不同的根视图附加到选项卡内的导航控制器。

然而,这很容易在界面构建器中完成,因为在这种情况下,我需要弄清楚在启动时界面构建器附加哪个视图对我没有多大用处。

我猜我需要在app appate class的applicationDidFinishLaunching方法中执行此操作,以某种方式获取我感兴趣的选项卡,并将视图推送到它的导航控制器上?

我该怎么做?

感谢。

2 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。在您的app delegate的applicationDidFinishLaunching方法中,您需要查看您的条件,并选择正确的设置为UINavigationController的根视图控制器。

我猜这是登录界面还是什么?如果你有一个早期会话的缓存登录,你不会再显示它?是吗?

如果您在应用程序委托中查看该方法,您将看到默认根视图控制器被实例化并推送到导航控制器的位置。只需在if()语句中复制该代码即可。我做到了这一点,很简单。

答案 1 :(得分:0)

所以我在applicationDidFinishLaunching方法中所做的是:

// get the array of tabs
NSArray *tabBarArray = tabBarController.viewControllers;
// in my case the navigation controller I'm interested in is in the 4th tab
UINavigationController *navigationController = [tabBarArray objectAtIndex:4];   

if(someLogic == true) {
    ViewController1 *viewController1 = [[viewController1 alloc] initWithNibName:@"View1" bundle:nil];
    [navigationController pushViewController:viewController1 animated:NO];
    [viewController1 release];
}
else {
    ViewController2 *viewController2 = [[viewController2 alloc] initWithNibName:@"View2" bundle:nil];
    [navigationController pushViewController:viewController2 animated:NO];
    [viewController2 release];
}

一切运作良好。