我在.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连接到文件所有者中UITableViewCell类型的插座。
9)xib中的表视图样式设置为分组。
10)尺寸检查器中显示的表格视图单元格的大小为N,这就是问题所在。如果我手动更改N或通过调整单元格可视表示的大小,则在绘制表格时不应用此大小。我还尝试在大小检查器中设置视图框架矩形高度以匹配。 无论N是大小,都无关紧要。
11)如果我使用self.tableView.rowHeight进行设置,那么单元格的高度不会设置在TVC的任何位置,那么它的高度确实会发生变化。但是我不想像这样明确地设置它,我想要拾取xib中的高度尺寸。
这让我疯了几天,并阅读了几个关于表格视图的教程(包括Apple的表格视图编程指南,特别是有关静态单元格的部分,我首先要遵循的说明来设置所有内容)没有给我任何问题所在的线索。
TIA
答案 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上的行高的覆盖(取消选中行高度属性上的“自定义”)。我担心这可能会在每个细胞上进行评估,因为我的所有细胞都是相同的高度,这会导致性能下降。