我有一个带有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,所以尽可能少地改变代码?
答案 0 :(得分:1)
我们使用界面构建器进行直接解决。
在界面构建器中,转到已添加xib
的{{1}},然后删除与tabBarController
相关联的tabBarItem
。
现在,从tableViewController
中的库中拖放UINavigationController
,并将此tabBar
的{{1}}设置为navigationController
。
由于
答案 1 :(得分:0)
您应该为标签栏上的每个标签创建一个TableViewDetailViewController
,而不是将UINavigationController
设置为您的标签栏ViewControllers之一。然后将TableViewDetailViewController放在相应的UINavigationController
中。 <{1}}在这种情况下会指向有效的self.navigationController
。