cellForRowAtIndexPath:返回nil / app崩溃

时间:2014-07-05 09:36:43

标签: ios objective-c uitableview

我的应用程序有一个动态单元格的表格视图。单元格是自定义UITableViewCell类的实例。填充表格工作正常。在app中的某个时刻,我需要确定屏幕上显示的是哪个单元格。我正在使用此函数来确定正在scrollViewDidScroll方法中查看的单元格。单元格高度很大,所以我想出了一个方程来确定显示的单元格index如下:

int index = (((int)scrollView.contentOffset.y)+250)/566;

NSLog(@"%@", [_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:1]]);

当我运行应用程序时,它返回null!我在Stack Overflow上搜索了这样一个问题,我找不到答案。我该如何归还牢房?

1 个答案:

答案 0 :(得分:1)

作为一般参考,我认为读取scrollview的contentOffset值以获取索引路径是非常不安全的。 UITableView具有可用于此的便捷方法indexPathOfRowAtPoint:。因此,要获取索引路径,可以使用

CGPoint point = .... // Whatever your point is
NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:point];

此外,您始终可以使用_tableView.visibleCells来获取包含当前可见单元格的数组。

这两种方式都更加安全,可以为您节省麻烦和错误