如何将navigationController添加到现有选项卡应用程序?

时间:2011-04-12 16:28:10

标签: iphone objective-c uinavigationcontroller uitabbarcontroller

我有一个带有2个标签的iPhone应用程序。这是我的申请代表:

 (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
// Override point for customization after application launch.
// Add the tab bar controller's current view as a subview of the window
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
 }

我的第一个标签是UITableViewController的子类。当有人点击我表格的一行时,我想推送一个新的视图控制器。我知道这是在didSelectRowAtIndexPath这样完成的:

TableViewDetailViewController *fvController = [[TableViewDetailViewController alloc] initWithNibName:@"TableViewDetailViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:fvController animated:YES];
    [fvController release];
    fvController = nil;

我的self.navigationController是NIL,因此没有任何内容被推送到视图堆栈。我应该在哪里创建我的navigationController,所以尽可能少地改变代码?

2 个答案:

答案 0 :(得分:1)

我们使用界面构建器进行直接解决。

界面构建器中,转到已添加xib的{​​{1}},然后删除与tabBarController相关联的tabBarItem

现在,从tableViewController中的库中拖放UINavigationController,并将此tabBar的{​​{1}}设置为navigationController

由于

答案 1 :(得分:0)

您应该为标签栏上的每个标签创建一个TableViewDetailViewController,而不是将UINavigationController设置为您的标签栏ViewControllers之一。然后将TableViewDetailViewController放在相应的UINavigationController中。 <{1}}在这种情况下会指向有效的self.navigationController