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传出来。