indexPathForCell: 返回nil的解决办法

在开发中, 经常会在cell中我们有可能需要获取到当前的cell的indexpath, 常用的方法是下面的方法

UITableViewCell *cell = (UITableViewCell *)[button superview];
[self.tableView indexPathForCell:cell];

或者

UIView *view = button;
while (view != nil && ![view isKindOfClass:[UITableViewCell class]]) {
  view = [view superview];
 }
UITableViewCell *cell = (UITableViewCell *)view;
[self.tableView indexPathForCell:cell];

但有时候我们这个方法返回nil, 而cell并不返回nil。
原因是当对应的cell是不可见的时候[self.tableView indexPathForCell:cell]会返回nil;
tableView刷新完全创建好当前的cell才能调用indexPathForCell:这个方法
解决的方法如下

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:cell.center];

你可能感兴趣的:(indexPathForCell: 返回nil的解决办法)