静态表视图单元格在xib中未应用的高度

时间:2012-01-16 20:59:49

标签: ios

我在.xib中创建了一个静态表格单元格,但是当显示时,未应用xib中设置的单元格高度,而是显示的单元格看起来像单元格的默认高度。

我把事情设定为:

1)表视图控制器派生自UITableViewController

2)TVC不包含在xib中,并且是在app delegate中的代码中创建的,并添加到标签栏控制器中。

3)TVC是使用initWithNibName创建的:bundle:提供的nib名称作为包含表视图和静态表格单元的xib的名称。

4)TVC有一个类型为UITableViewCell的IBOutlet iVar *

5)cellForRowAtIndexPath返回此iVar。

6)numberOfRowsInSection返回1,numberOfSectionsInTableView返回1;

7)xib包含一个表视图,它连接到文件的所有者视图。文件所有者设置为我的自定义表视图控制器类。

8)xib中的UITableViewCell连接到文件所有者中UI​​TableViewCell类型的插座。

9)xib中的表视图样式设置为分组。

10)尺寸检查器中显示的表格视图单元格的大小为N,这就是问题所在。如果我手动更改N或通过调整单元格可视表示的大小,则在绘制表格时不应用此大小。我还尝试在大小检查器中设置视图框架矩形高度以匹配。 无论N是大小,都无关紧要。

11)如果我使用self.tableView.rowHeight进行设置,那么单元格的高度不会设置在TVC的任何位置,那么它的高度确实会发生变化。但是我不想像这样明确地设置它,我想要拾取xib中的高度尺寸。

这让我疯了几天,并阅读了几个关于表格视图的教程(包括Apple的表格视图编程指南,特别是有关静态单元格的部分,我首先要遵循的说明来设置所有内容)没有给我任何问题所在的线索。

TIA

3 个答案:

答案 0 :(得分:1)

实施heightForRowAtIndexPath并返回您的IBOutlet中链接到的UITableViewCell的高度。

答案 1 :(得分:0)

您是否在UITableView委托中定义了- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

您可能需要以下内容:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 30;
}

如果您仍然遇到问题,试试这篇文章:Setting custom UITableViewCells height

答案 2 :(得分:0)

我有同样的问题,这里和其他线程的每个人都建议编写代码来解决问题,这似乎是错误的。如果你必须编写代码以使属性正确,那么使用IB有什么意义呢?

答案结果非常简单,但需要一点追踪。在IB中,有两个地方可以设置行高(就像有两个地方可以在代码中设置它)。一个在桌子上,另一个在电池上。

我(错误地)设置它的位置是Property Inspector中tableViewCell的“行高”属性。更改此值对运行时的行高没有影响。

然后我找到并设置了TableView的“行高”属性(对象层次结构的一步)和中提琴,行高在运行时是正确的。一旦这个工作,我关闭了TableViewCell上的行高的覆盖(取消选中行高度属性上的“自定义”)。我担心这可能会在每个细胞上进行评估,因为我的所有细胞都是相同的高度,这会导致性能下降。