标签栏视图显示复合视图的问题

时间:2010-04-19 10:35:42

标签: iphone

我创建了一个标签栏应用程序,我将第一个标签设为一个表格。所以我创建了一个tableView控制器,并将第一个选项卡的视图控制器的类标识设置为我的tableView控制器。

这很好用,我看到桌子的内容填满了整个屏幕。

然而,这不是我在最终目标中实际想要的东西 - 我想要一个具有多个视图的复合窗口: - 上述表格 - 包含数据的自定义视图

所以我要做的是为这个内容创建一个nib(称之为contentNib),将tab的控件中的tab的类更改为通用的UIViewController,并将该选项卡的nib设置为这个新的contentNib。

在这个新的contentNib中,我在tableView上拖动并将File的Owner设置为TableViewController。然后我将dataSource和委托链接到文件的所有者(这是TableViewController)。

令人惊讶的是,这不起作用,我收到错误:

**Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x3b0f910'**

这让我感到很困惑,因为文件的所有者是TableViewController,它已被指定为dataSource和delegate。有人要么深入了解我的困惑,要么链接到如何使复合视图包含tableView的示例?

***** update ****我在Apple TableView编程指南中看到了这一点: “注意:如果要管理的视图由多个子视图组成,其中一个是表视图,则应该使用UIViewController子类而不是UITableViewController的子类来管理表视图.UITableViewController类的默认行为是make表格视图填充导航栏和标签栏之间的屏幕(如果有的话)。“* < -----我真的不知道这告诉我要做什么......如果有人可以解释或指出我的例子,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

文件所有者应该是您实例化的类。例如,在contentNib文件中,您应该分配并初始化一个表视图,将@“contentNib”作为参数传递给initWithNibNamed:bundle:。听起来你没有这样做,因为文件的所有者,在IB中设置为UITableViewController,实际上只是一个UIViewController。

IB中的设置只是让IB知道要提供哪些出口和行动;你有责任提供适当的物品。