从笔尖创建UITableViewCell,动态单元格高度

时间:2012-07-24 11:17:18

标签: ios uitableview

我从笔尖创建了大部分UITableView单元格。在这个特殊的项目中有很多,它们有各种各样的尺寸。

现在我在设计时指定了我的笔尖中的单元格高度,我希望这是我指定此值的唯一位置。

但是,在我的nib加载到cellForRowAtIndexPath之前调用tableView:heightForRowAtIndexPath:,所以我没有这个值。

这有点“烦人”,因为我必须在代码中再次指定我的身高。

我可以预先加载一个笔尖来获得这个值。有没有人有他们用来管理这个的聪明模式,或者你只是和它一起生活?

2 个答案:

答案 0 :(得分:2)

好吧,我可以想到三种方法让这更容易:

1)将高度编码为nib名称 - myNib.47.xib

2)创建一个可变字典,并在viewDidLoad中为reuseIdentifier创建条目作为键,并将nsnumber作为对象。

3)变化2.在viewDidLoad上,使用以下方法将UINib对象与reuseIdentifier关联:

cellNib = [UINib nibWithNibName:@"MyCellNibXYZ" bundle:nil];

在一个可变字典中。当您需要一个单元格时,请致电:

UINib *nib = [mutableDictioanary objectForKey:...];
MyCell *cell = [[cellNib instantiateWithOwner:nil options:nil] objectAtIndex:0];

然后,您可以在需要高度时实例化单元格,然后再抛出它。实例化比在每次访问时访问文件系统读取文件要快得多。

答案 1 :(得分:0)

你写过:现在我在设计它的时候在我的笔尖中指定了我的单元格高度,我希望这是我指定这个值的唯一地方。

如果您确实只想在 IB中保持高度,则应在Nib-init:中为-loadView创建每个单元格的实例{1}}方法,您可以使用该实例来确定单元格的最终高度。因此,您可以使用- tableView:heightForRowAtIndexPath:方法,使用这些预先插入的实例了解每个单元格的确切高度。

不太优雅,但它正在发挥作用。