我可以安全地使用dequed tableView单元格作为原型

时间:2014-04-09 08:18:46

标签: ios objective-c uitableview cocoa-touch uikit

我正在使用原型细胞计算真实细胞高度。由于我使用的是故事板,因此我选择通过dequeing来创建原型单元。示例代码:

- (MyCell *)prototypePriceOptionCell
{
    if (_prototypeCell == nil) {
        _prototypeCell = (MyCell *)[self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    }
    return _prototypePriceOptionCell;
}

此原型永远不会在tableView方法中返回cellForRowAtIndexPath

是否可以通过表视图来重用它并在表视图中显示它?

1 个答案:

答案 0 :(得分:0)

从技术上讲,您可以docs

  

如果您为指定的标识符和新单元格注册了一个类   必须创建,此方法通过调用它来初始化单元格   initWithStyle:reuseIdentifier:方法。对于基于笔尖的细胞,这个   方法从提供的nib文件加载单元格对象。如果   现有的单元可以重用,这种方法称为单元   而不是prepareForReuse方法。

但它也表示在某些情况下它可以返回零。 但是,我不会使用你的方法,不是因为它不起作用,而是因为它不应该像那样使用。这意味着您依赖于不应该像这样使用的功能的弱代码。

我的建议是,手动调用适当的方法来实例化你的单元格。此外,我喜欢将我的单元格放在单独的xib上,远离故事板。

修改 最后回答你的问题,是的,如果你在cellForRowAtIndexPath

中呼叫出队,那么单元格可以并且将会在表格视图中出列