在标签栏控制器中实现表视图?

时间:2011-02-12 22:39:23

标签: iphone iphone-sdk-3.0 ios4

我开始学习表格视图。我的应用程序使用Tab Bar Controller,所有选项卡都是简单的视图。我想添加另一个选项卡,在此选项卡中我正在尝试实现表格式导航控制器。从我正在阅读的这些视图需要一个UINavigation控制器作为根视图控制器,但我的标签栏控制器已经设置了我的根视图控制器,所以我有点困惑。

有人可以解释我应该做些什么来实现这样的事情。

2 个答案:

答案 0 :(得分:17)

这是一个很好的问题,也是大多数Cocoa新手一直都在努力的问题。您需要考虑应用程序的体系结构,以查看最符合您需求的内容,但在大多数情况下,您需要TabBarController作为服务其他视图的主/根控制器,然后从那里配置tabItem视图根据您需要显示的数据。

对于您的特定情况,当您创建新的选项卡项时,您希望使用导航控制器而不是将UIViewController提供给该tabItem视图。然后,在导航控制器下,您将能够分配其根视图控制器,该控制器应该是UITableViewController的实例(如果您在视图中需要的不仅仅是UITableView,还应该是具有UITableView实例的UIViewController)。

所以层次结构有点像这样

  

1 - TabBarController

     

1.1 ----- NavigationController

     

1.1.1 ------- UITableViewController

     

1.1.1 -------导航控制器堆栈上的其他视图

     

1.2 ----- tabBarController上的任何其他视图

这是一个很好的视频教程,可以帮助你:http://www.youtube.com/watch?v=LBnPfAtswgw

祝你好运, ROG

答案 1 :(得分:1)

首先,表格视图不一定要嵌入导航控制器中。大部分时间都是,但这不是必要条件。

要添加表格视图,您需要创建UITableViewController(或其中嵌入了UIViewController的通用UITableView,这取决于您的需求)并将其放入UITabBarController 1}} viewControllers属性。例如:

UIViewController *vc1 = [[FirstViewController alloc] init];
UIViewController *vc2 = [[SecondsViewController alloc] init];
UITableViewController *tableVC = [[UITableViewController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:vc1, vc2, tableVC, nil];

当然,上面的视图控制器应该是具体的子类,因此您可以实现自定义视图和逻辑。