在UITabBarController中的UITableViewController中创建UINavigationController

时间:2011-07-18 09:36:27

标签: uinavigationcontroller xcode4 uitabbarcontroller uitableview

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

现在我想点击 UITableViewController 中的一个单元格来打开 UINavigationController 以显示 UIViewController 以及该产品的详细信息。< / p>

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

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

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

提前致谢:)

2 个答案:

答案 0 :(得分:5)

首先您需要将层次结构重置为以下内容:

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

您需要在TabBarController中添加UINavigationController,然后您将使用它来推送产品详细信息。

在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];

答案 1 :(得分:0)