我从笔尖创建了大部分UITableView单元格。在这个特殊的项目中有很多,它们有各种各样的尺寸。
现在我在设计时指定了我的笔尖中的单元格高度,我希望这是我指定此值的唯一位置。
但是,在我的nib加载到cellForRowAtIndexPath之前调用tableView:heightForRowAtIndexPath:,所以我没有这个值。
这有点“烦人”,因为我必须在代码中再次指定我的身高。
我可以预先加载一个笔尖来获得这个值。有没有人有他们用来管理这个的聪明模式,或者你只是和它一起生活?
答案 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:
方法,使用这些预先插入的实例了解每个单元格的确切高度。
不太优雅,但它正在发挥作用。