UITableView - 根据索引路径设置单元格内容

时间:2012-08-20 15:09:37

标签: xcode uitableview

- (UITableViewCell *)tableView:... cellForRowAtIndexPath:... {
    // init and sanity check

    if (indexPath.row == 0) {
        // make cell look like a section header
        // easier and less complex than using a custom header view

        NSLog(@"header");
        // should prove that only four cells get the bg image
        // and yet, almost every time the table is reloaded
        // one more cell unexpectedly gets the background
        // without putting another line in the debugger
    } else {
        // normal cells after row 0
        // BUG: some of these are getting the row 0 background

        NSLog(@"row");
        // firing exactly the right number of times --
        // once for each row with an index greater than 0
        // so why are some of these cells getting the header bg?

        // when these cells get the headers' contents
        // they behave exactly as one would expect
        // except that they should be the normal rows
    }

    // misc stuff, not causing problems

    return cell;
}

如果没有强制用户完全重新启动应用程序只是为了将不同的数据转储到表中,我无法弄清楚如何修复错误。

如果我崩溃每个部分(即清空expandedSections集并重新加载,只留下伪标题可见),问题就不那么严重了,但它不会消失。


修改

初始加载:screenshot
重新加载后:screenshot
链接而不是图像,因为它是一个iPad应用程序 使用一些虚拟内容进行测试。

这有什么帮助吗?我知道需要更多代码才能获得认真的帮助,但我不知道还有什么要添加的内容,缺少指向整个视图代码的链接。

2 个答案:

答案 0 :(得分:0)

它可能与单元格缓存有关...有关设置行== 0的图像而不是清除它...但是由于您显示的代码量有限,因此很难更具体。< / p>

答案 1 :(得分:0)

您是否尝试为第一个单元格设置不同的单元格标识符,为其余单元格设置另一个单元格标识符? tableView在创建新单元格时重用相同的单元格类型,因此可能会混淆它们。通过为每种类型使用不同的单元标识符,它将准确知道何时使用每个单元格。