0

我尝试动态绘制和重绘我的 UITableView,但是当动态但我的单元格没有显示时(最后一个除外)。

我将 UITableViewCell 存储在一个数组中,发现我的单元格具有相同的十六进制地址(0xa647f80 和 0xa64cbf0),这就是为什么我猜我的表格保留了空间但不显示单元格

这是我的数组的一部分:

(
    (
        "<CriteriaAdvancedSubmenuCell: 0xa647f80; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0xa610c60>>",
        "<CriteriaAdvancedSubmenuCell: 0xa64cbf0; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0xa63c4f0>>"
    ),
        (
        "<CriteriaAdvancedSubmenuCell: 0xa647f80; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0xa610c60>>",
        "<CriteriaAdvancedSubmenuCell: 0xa64cbf0; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0xa63c4f0>>"
    ),
        (
        "<CriteriaAdvancedSubmenuCell: 0xa647f80; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0xa610c60>>",
        "<CriteriaAdvancedSubmenuCell: 0xa64cbf0; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0xa63c4f0>>"
    )
)

这是我实例化我的细胞的方式:

static NSString *cellID = @"criteriaAdvancedSelectionCustomCell";

CriteriaAdvancedSubmenuCell *cell = (CriteriaAdvancedSubmenuCell *) [tableView dequeueReusableCellWithIdentifier:cellID];

if (cell == nil)
{
    cell = (CriteriaAdvancedSubmenuCell *) [tableView dequeueReusableCellWithIdentifier:cellID];
}
else
{
    [cell prepareForReuse];
}

请帮帮我,我快疯了!

谢谢 :)

4

1 回答 1

1
if (cell == nil)
{
    cell = (CriteriaAdvancedSubmenuCell *) [tableView dequeueReusableCellWithIdentifier:cellID];
}

您是在告诉您的 TVC 重用一个尚不存在的单元格。

尝试像这样替换 if 部分(您可能需要更改UITableViewCellStyleDefault部分):

if (cell == nil) {
    cell = [[CriteriaAdvancedSubmenuCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                              reuseIdentifier:@"criteriaAdvancedSelectionCustomCell"];
}
于 2013-10-04T09:42:03.717 回答