【问题标题】:How to add navigationController to existing tab application?如何将 navigationController 添加到现有的选项卡应用程序?
【发布时间】:2011-04-13 01:09:28
【问题描述】:

我有一个带有 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,所以没有任何东西被推送到视图堆栈。我应该在哪里创建我的导航控制器,以便尽可能少地更改代码?

【问题讨论】:

    标签: iphone objective-c uinavigationcontroller uitabbarcontroller


    【解决方案1】:

    我们有使用界面生成器的直接解决方案。

    interface builder中,转到您已添加tabBarControllerxib,并删除您已连接tableViewControllertabBarItem

    现在,将UINavigationController 从库中拖放到您的tabBar 中,并将此navigationControllerrootViewController 设置为您的tableViewController

    谢谢

    【讨论】:

      【解决方案2】:

      您应该为标签栏上的每个标签创建一个UINavigationController,而不是将您的TableViewDetailViewController 设置为您的标签栏视图控制器之一。然后将您的 TableViewDetailViewController 放在相应的UINavigationController 中。在这种情况下,self.navigationController 将指向一个有效的 UINavigationController

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-18
        • 1970-01-01
        • 2013-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        相关资源
        最近更新 更多