UITableView使用Interface Builder中的所有可用空间

时间:2009-10-23 21:05:59

标签: iphone interface-builder

我在创建UIView(在Interface Builder中)时遇到问题,该UIView包含带有其他对象的UITableView,例如UIButton或UILabel。无论UITableView对象本身的大小如何,UITableView总是占用UIView中的最大空间量。文件所有者是标准的UITableViewController。

3 个答案:

答案 0 :(得分:12)

以下是如何轻松完成此任务:

1)使用xib创建一个表视图控制器。

2)将.h文件中的继承类型从UITableViewController更改为UIViewController。

3)将协议UITableViewDataSource,UITableViewDelegate添加到.h文件中。

4)打开xib,添加视图。

5)在视图下的xib中拖动表视图,根据需要调整大小。

6)将文件所有者的“view”属性连接到View而不是UITableView。表视图的数据源和委托属性仍应连接到文件的所有者。

7)(可选)如果你想能够重新加载或以其他方式访问表视图控制器之外的表委托传递表视图的方法,创建名为“myTable”之类的UITableView * IBOutlet,并连接IB中的表格。


另一种方法是使用xib创建一个新的UIViewController,向xib添加一个表,将数据源/委托连接到文件的所有者,并创建一个新的UITableViewController类,用于将方法复制到视图控制器中,然后删除。

答案 1 :(得分:0)

不幸的是,在Interface Builder(IB)中创建UITableView对我来说是非常有问题的。我遇到了和初学者一样的问题,经过多次挫折之后,最终放弃了对UITableViews的IB。

对我来说,最好的解决方案是以编程方式实现UITableViewController(以及用作标题的UINavigationController)。一旦你弄清楚整个模型 - 视图 - 控制器范例,它实际上相当简单。

在Apple的文档中可以找到一些以编程方式处理它们的好资源:

“适用于iPhone OS的表格视图编程指南”
“适用于iPhone OS的View Controller编程指南”

答案 2 :(得分:0)

Cocoa with love有一篇关于Recreating UITableViewController to increase code reuse的文章。如果您无法使用UITableViewController,但希望确保UIViewController的行为方式相同,则此功能非常有用。