0

我在我的项目中使用 CustomTableCell。我可以看到“dequeueReusableCellWithIdentifier”在“cellForRowAtIndexPath”方法中返回了一个有效的单元格,因为它应该在重新加载表时返回。

在 CustomTableCell 中,我有一些我想重复使用的图像,而无需再次下载它们。然而,每次我在“didSelectRowAtIndexPath”委托方法中使用“dequeueReusableCellWithIdentifier”时得到一个“nil”。

原来的桌子没有被破坏。该表是类对象,我可以看到它与“didSelectRowAtIndexPath”参数中收到的 tableView 相同。

这种行为与我使用 tableview 的项目中的视图控制器一致。

我正在使用ARC。知道有什么问题吗?

谢谢!

4

1 回答 1

2

这个问题有点含糊,但我相信您只是想从“didSelectRowAtIndexPath”中访问您的自定义单元格。如果是这种情况,那么您应该使用:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomTableCell *myCell = (CustomTableCell*)[tableView cellForRowAtIndexPath:indexPath];
}

然后,您可以随意访问自定义单元格的任何部分。

如果你好奇:

“dequeueReusableCellWithIdentifier”用于通过重用“移动”超出可见范围的表格单元格来减少对象分配和释放的数量。即,如果您有一个包含 1000 个单元格的表格,但在任何给定时间只有 10 个是可见的。大约 10 个细胞将被创建并一遍又一遍地重复使用。因此,当调用 dequeueReusableCellWithIdentifier 时,会将其中一个单元格从当前未使用的单元格堆栈中拉出,或者如果堆栈为空,则创建一个。

于 2012-08-11T21:16:41.413 回答