0

我有一个表格视图,一切运行良好,但现在我想让第一个单元格成为其余单元格的“解锁”按钮。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [currentPack count] + 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"Row is %i", indexPath.row);

    if(indexPath.row == 0)
    {
        SoundCell *cell = [SoundCell dequeOrCreateInTable:soundsTable];
        cell._NameLabel.text = @"Unlock This Pack;
        [cell._startButton setAlpha:0.0];

        return cell
    }
    else
    {
        SoundCell *cell = [SoundCell dequeOrCreateInTable:soundsTable];
        cell._NameLabel.text = [currentPack objectAtIndex:indexPath.row - 1];

        return cell
    }
}

现在它有点工作了,第一个单元格与其他单元格不同,看起来完全一样。我的问题是,由于某种原因,后来的一些单元格使用

[cell._startButton setAlpha:0.0];

即使 indexPath.row 在制作时不为 0 也是如此。它不会发生在每个单元格上,只是间歇性的,偶尔如果我上下滚动表格很多,那么其他单元格也会出现这个问题。在所有其他方面,表格都可以正常工作,选择一个单元格会触发正确的响应等。有谁知道可能导致这种情况的原因?最初实现起来似乎很简单......

谢谢

4

3 回答 3

4

为这两种细胞类型使用不同的重用标识符,以便它们在重用时不会混合。

或者将以下行添加到其余行:

[cell._startButton setAlpha:1.0];
于 2012-04-17T14:27:04.593 回答
1

您受到单元缓存的影响。如果您要在某些单元格上调用 setAlpha,请将其设置在所有单元格上,这样您就不会得到来自现有单元格的陈旧值。

于 2012-04-17T14:29:18.967 回答
0

我建议创建一个单独的 SoundCell 实例并将其存储为 i-var。只需配置一次并返回行索引 0。对于其余行,返回可重复使用的“通常”单元格。

于 2012-04-17T14:28:33.490 回答