iOS 关于indexPathForCell:返回nil的问题

indexPathForCell

   项目中很多用到UITableView的,当我们做一些稍微复杂的cell的时候,会把cell里的响应事件用delegate传出来(当然用block也行,但是一般用delegate,更加易于代码阅读)。
   delegate传响应事件和值的时候,一般会把cell传出来,因为这样可以用indexPathForCell这个方法取出cell的NSIndexPath:

- (void)actionWithCell:(CustomerDetailEditCell *)cell{
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
}

   但是当你要取的cell超出屏幕范围了,这个indexPathForCell方法将不再适用,会返回哥nil,其实API中已经给予说明了:

- (nullable NSIndexPath *)indexPathForCell:(UITableViewCell *)cell;   
                   // returns nil if cell is not visible

   所以这点要注意。其实可以让cell持有NSIndexPath,加载cell时赋值给cell。这样经过代理,直接给NSIndexPath传出来。

你可能感兴趣的:(iOS 关于indexPathForCell:返回nil的问题)