2012-01-16 60 views
1

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

我已设置的东西,如:

1)表视图控制器从的UITableViewController

2)TVC未包含在XIB内和在代码被创建在应用程序的委托,并添加到导出一个标签栏控制器。

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

4)TVC具有类型的一个IBOutlet的Ivar的UITableViewCell *

5)的cellForRowAtIndexPath返回此IVAR。

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

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

8)xib中的UITableViewCell连接到File's Owner的UITableViewCell类型的出口。

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

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

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

这已经让我坚持了几天,并阅读了几个关于表视图的教程(包括Apple的桌面视图编程指南,特别是关于静态单元格的章节,我首先遵循的指令来设置所有内容)在问题所在的地方没有给我任何线索。

TIA

回答

1

实施heightForRowAtIndexPath,回到你的IBOutlet中链接到UITableViewCell的高度。

+0

谢谢。这样可行。这是一种变通方法还是您应该将静态单元格与.xib一起使用的方式 - 因为在我看过的教程中没有提及它的一个步骤。 – Gruntcakes 2012-01-16 21:15:02

+0

我不是100%确定的,因为我现在主要使用UIStoryboards,它似乎更好地处理静态单元格,但肯定该方法是控制行高度的正确方法,并且如果从XIB中加载tableviewcell这样,我没有看到更好的选择。 – ikuramedia 2012-01-16 21:17:18

+0

你会如何知道它是哪个笔尖? – MJB 2012-06-06 00:34:54

0

你有- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath在您的UITableView委托定义?

你可能想是这样的:

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

尝试,如果你仍然有问题试试这个帖子这个帖子:Setting custom UITableViewCells height

+2

提问者正在寻找XIB来控制高度,而不是以编程方式设置。 – ikuramedia 2012-01-16 21:08:05

+0

谢谢但我不知道,但我不应该?我读过的众多源代码说,单元格的高度可以在xib中设置,如果我实现了这个功能,我正在以编程方式设置它,这就是我说的我不想做的。 – Gruntcakes 2012-01-16 21:09:20

0

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

答案结果很简单,但花了一点时间追踪。在IB中,有两个地方可以设置行高(就像代码中有两个地方可以设置)。一个在桌子上,另一个在单元格上。

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

然后,我发现并设置了TableView的“行高”属性(向上一级对象层次结构)和中提琴,行高在运行时是正确的。一旦这个工作,我关闭了TableViewCell上行高的覆盖(取消选中Row Height属性中的“Custom”)。我担心这可能会在每个单元上进行评估,因为我所有的单元都是相同的高度,所以会导致性能下降。

+1

这里的问题是,如果你有不同的自定义单元格,你可以为它们设置高度。 – MJB 2012-06-06 00:39:46

相关问题