1

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

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

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

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

我可以预先加载一个笔尖来获得这个值。有没有人有任何聪明的模式来管理这个,或者你只是忍受它?

4

2 回答 2

2

好吧,我可以想出三种方法来使这更容易一些:

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

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

3) 变体 2. 在 vi​​ewDidLoad 中,使用以下方法将 UINib 对象与重用标识符关联:

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

在可变字典中。当你需要一个单元格时,你调用:

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

然后,您可以在需要高度时实例化一个单元格,然后将其扔掉。实例化比每次访问时去文件系统读取文件要快得多。

于 2012-07-24T11:36:07.313 回答
0

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

如果您真的只想在 中保留高度 ,您应该在or方法中IB创建每个单元格的实例,您可以使用这些实例来确定单元格的最终高度是多少。因此,您将在该方法中使用这些预先启动的实例知道每个单元格的确切高度。Nib-init:-loadView- tableView:heightForRowAtIndexPath:

不太优雅,但它正在工作。

于 2012-07-24T11:34:19.847 回答