未应用静态表视图单元格的高度(以 xib 为单位)



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

我已经设置为:

1) 表视图控制器源自UITableViewController

2) TVC不包含在xib中,而是在应用程序委托中的代码中创建的,并添加到选项卡栏控制器中。

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,则在绘制表格时不会应用此大小。我还尝试在尺寸检查器中设置视图框架矩形高度以匹配。N是什么值,大还是小并不重要。

11) 单元格的高度没有在TVC中的任何位置设置,如果我使用self.tableView.rowHeight设置它,那么它的高度就会改变。但我不想这样明确地设置它,我希望xib中的高度大小被拾取。

几天来,这一直让我抓狂,阅读了几篇关于表视图的教程(包括苹果的表视图编程指南,尤其是关于静态单元格的部分,我首先按照它的指示设置了所有内容)并没有给我任何问题所在的线索。

TIA

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

您的UITableView委托中定义了- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath吗?

你可能想要这样的东西:

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

如果你仍然有问题,请尝试这篇文章:设置自定义UITableViewCells高度

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

答案很简单,但需要一点时间才能找到。在IB中,有两个位置可以设置行高(就像在代码中有两个地方可以设置一样)。一个在桌子上,另一个在牢房里。

我(错误地)设置它的地方是属性检查器中tableViewCell的"行高"属性。在运行时更改此值对行高度没有影响。

然后我找到并设置了TableView的"Row Height"属性(对象层次结构的上一步)和viola,行高在运行时是正确的。工作完成后,我关闭了TableViewCell上的Row Height覆盖(取消选中Row Heights属性上的"Custom")。我担心这可能会在每个细胞上进行评估,这会扼杀性能,因为我所有的细胞都是相同的高度。

最新更新