【问题标题】:Create UINavigationController in UITableViewController inside UITabBarController在 UITabBarController 内的 UITableViewController 中创建 UINavigationController
【发布时间】:2011-10-07 13:02:03
【问题描述】:

我有一个基于 UITabBarController 的应用程序,并且在其中一个选项卡内我有 UITableViewController 来显示“产品”,直到这里一切正常。 p>

现在我希望在单击 UITableViewController 内的一个单元格时打开 UINavigationController 以显示具有该产品详细信息的 UIViewController

我认为应用程序层次结构应该如下所示:

UITabBarController (BASE) Level-1
  |
  |___ UITableViewController (PRODUCTS) Level-2
         |
         |___ UINavigationController Level-3
                |
                |___ UIViewController (PRODUCT DETAILS) Level-4

如何达到Level-3和Level-4?

提前致谢:)

【问题讨论】:

    标签: uinavigationcontroller xcode4 uitabbarcontroller uitableview


    【解决方案1】:

    首先,您需要将层次结构重置为如下所示:

    UITabBarController (BASE)
      |
      |___ UINavigationController
          |
          |___ UITableViewController (PRODUCTS)
            |
            |___ UIViewController (PRODUCT DETAILS)
    

    您需要在 TabBarController 中添加一个 UINavigationController,然后您将使用它来推送 Product Detail。

    在 TabBarController 上添加 UINavigation:

    UITabBarController *tabBarController = [[UITabBarController alloc] init];
    
    UINavigationController *tableNavController_1 = [[[UINavigationController alloc] initWithRootViewController:YourProductViewController_1] autorelease];
    UINavigationController *table2NavController_2 = [[[UINavigationController alloc] initWithRootViewController:YourProductViewController_2] autorelease];
    
    tabBarController.viewControllers = [NSArray arrayWithObjects:tableNavController_1, table2NavController_2, nil];
    
    //then add the controller to view like,
    // this:
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];
    
    //or this:
    [self.view addSubview:tabBarController.view];
    

    我建议你为每个ProductViewController创建一个新的UITableViewController,然后使用委托方法:- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath推送详细视图:

    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"Nib name" bundle:nil];
    // Pass the selected object to the new view controller.
    [self.navigationController pushViewController:detailViewController animated:YES]
    [detailViewController release];
    

    【讨论】:

    • 非常感谢您详细的回复,但是对于我来说重新设计应用程序太难了,因为我还是个新手。如果有办法向我的表格添加导航,我真的很高兴。
    • 要拥有一个带有导航的 UITableViewController,你需要一个 UINavigationController。在您的特定情况下,您必须在 TabBarController 的“内部”添加一个 UINavigationController,并在 UINavigationController 的“内部”添加一个表格。正如我之前解释的那样
    • +1 用于显示层次结构的第一个图表 - 将导航控制器放置在选项卡控制器和初始表视图之间使我对“详细”视图的后续工作!
    【解决方案2】:

    【讨论】:

    • 感谢您的帮助@Legolas,本教程是使用 Xcode3 完成的,而我正在使用的 Xcode4 中没有一些步骤!您能否指导我添加什么以使我的 UITableViewController 单元格可单击以使用 UINavigationController 加载详细信息 UIViewController?
    猜你喜欢
    • 2019-03-03
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多