UITableViewCell未显示

时间:2013-10-04 09:33:14

标签: ios uitableview

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

我将UITableViewCell存储在一个数组中,发现我的单元格具有相同的hexa地址(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];
}

请帮助我,我变得疯狂了!

谢谢:)

1 个答案:

答案 0 :(得分:1)

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

您告诉您的TVC重复使用尚不存在的单元格。

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

if (cell == nil) {
    cell = [[CriteriaAdvancedSubmenuCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                              reuseIdentifier:@"criteriaAdvancedSelectionCustomCell"];
}