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

Iphone UITableView使用Interface Builder中的所有可用空间,iphone,interface-builder,Iphone,Interface Builder,我在创建包含UITableView和其他对象(如UIButton或UILabel)的UIView(在Interface Builder中)时遇到问题。UITableView始终占据UIView中的最大空间量,而与UITableView对象本身的大小无关。文件所有者是一个标准的UITableViewController。不幸的是,在Interface Builder(IB)中创建UITableView对我来说是一个很大的问题。作为一名新手,我遇到了与您相同的问题,在经历了许多挫折之后,我最终放弃了

我在创建包含UITableView和其他对象(如UIButton或UILabel)的UIView(在Interface Builder中)时遇到问题。UITableView始终占据UIView中的最大空间量,而与UITableView对象本身的大小无关。文件所有者是一个标准的UITableViewController。

不幸的是,在Interface Builder(IB)中创建UITableView对我来说是一个很大的问题。作为一名新手,我遇到了与您相同的问题,在经历了许多挫折之后,我最终放弃了IB for uitableview

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

在苹果公司的文档中可以找到一些以编程方式处理这些问题的好资源,其名称如下:

“iPhone操作系统的表视图编程指南”

“查看iPhone操作系统的控制器编程指南”

以下是如何轻松完成此操作:

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

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

3) 将协议UITableViewDataSource、UITableViewDelegate添加到.h文件

4) 打开xib,在视图中添加

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

6) 将文件所有者的“视图”属性连接到视图,而不是UITableView。表视图的datasource和delegate属性仍应连接到文件的所有者

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



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

Cocoa with love有一篇关于。如果您不能使用
UITableViewController
,但希望确保您的
UIViewController
将以相同的方式运行,这将非常有用。

这是正确的方法。Apple的文档中写道:“如果要管理的视图是一个组合视图,其中一个表视图是多个子视图之一,则必须使用UIViewController的自定义子类来管理表视图(和其他视图)。不要使用UITableViewController对象,因为此控制器类会调整表视图的大小,以填充导航栏和选项卡栏之间的屏幕(如果有)。”还有一步,我认为您需要添加Kendall-他必须显式地将tableView添加为UIViewController类的属性,并将其设置为IBOutlet.Kendall/bpapa-感谢您的帮助。通过你的综合回答,我能够解决我的问题。关于bpapa的最后一条评论,我必须在UIViewController类中创建一个名为“tableView”的属性;然而,即使我没有将它声明为IBOutlet或将IBOutlet连接到实际的tableView本身,它似乎也能工作。我还没有完全弄明白它为什么有效…:-)谢谢bpapa,我也加入了这一步——我也一直这么做。詹姆斯-很高兴你能让它工作,但我认为插座需要连接!另外,我还没有看到你提到的苹果文档的那一部分——非常有趣。看看肯德尔的回答和我的评论。自3.0以来,苹果公司清理了文档以更好地解释它。使用这种方法,您仍然可以在Interface Builder中查看表。是否可以将其重命名为“UITableView使用Interface Builder中的所有可用空间”?当前的标题不是很有描述性