cellForRowAtIndexPath在设备上返回nil

时间:2010-12-29 13:39:00

标签: iphone ios4 tableview

我花了几个小时试图解决一个非常奇怪的问题,但我真的不知道如何继续。

我有一个从XIB引用的分组UITableView,其中填充了自定义(子类)UITableViewCell单元格。所有单元格(两个部分,每个部分有一个单元格)都是可见的,我试图通过调用来获取其中一个:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1];
LocationSearchFilterCell *cell = (LocationSearchFilterCell *)[filterTable cellForRowAtIndexPath:indexPath];

在模拟器4.2上,单元格正确返回;
在Device 4.0.x上,代码返回NIL;
在Simulator 4.0.x上,代码返回NIL;
在模拟器4.1上,单元格在Device 4.1上正确返回但不

最奇怪的是,我在应用程序中的其他几个地方使用这种方法,并且单元格总是正确返回。我想这是一些奇怪的组合,我做了一些不同的东西结合一些iOS bug。

有什么想法吗?

P.S。在返回NIL的情况下,通过使用GDB,我在创建单元格时获取单元格的指针并调用:

(gdb) po (void *)[filterTable indexPathForCell:(UITableViewCell *)0x7b08520]

我得到一个有效的索引路径(与我提​​供的路径相匹配),这意味着该单元格有效并显示在表格视图中。
我甚至试过传递最后一次调用返回的对象(通过指针),我仍然得到NIL。

1 个答案:

答案 0 :(得分:0)

有趣的,

事实证明,在我尝试获取单元格(stupid me :))之前,有人隐藏了表格视图。

我正在做的是,触发一个动画来隐藏表视图(嵌套到我从我尝试获取单元格的方法调用的一些方法中)。因为我在断点处停了下来,动画也停止了,所以它就像桌面视图可见一样缝合在一起。

我还不明白为什么表视图被隐藏为隐藏,尽管动画仍未完成(我只更改动画中的帧并在动画结束后将表设置为隐藏)?

我想这个问题的答案是关键的原因,为什么在Device / Simulator / iOS的不同组合中我会得到不同的行为。无论如何,解决方案就像移动我在上面的方法顶部发布的两条线一样简单。

感谢Rits引发了我的推理问题;)

问候