cell中事件代理到tableView进行操作(如删除)的实现

项目中有个需求,cell的删除按钮代理到tableView里实现并进行删除动画。

原来我的做法是,给cell加个属性cellIndex,然后在cell赋值的时候,将indexPath.row赋给cellIndex。

后来发现有个问题,就是我连续进行两次删除操作的时候,cell的cellIndex就会发生混乱。

所以改用以下方法,在cell中取到indexPath,代理出去使用,bug得到解决

//IOS7以后,cell的superView为UITableViewWrapperView
UITableView *tableView = (UITableView *)self.superview.superview;
NSIndexPath *indexPath = [tableView indexPathForCell:self];
//然后代理到tableView,执行:
[self.list removeObjectAtIndex:index];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop];

下面拟将获取indexPath的方法封装在UITableViewCell中,方便使用:

@interface UITableViewCell (UnNuLL)
- (NSIndexPath *)getIndexPath;
@end
@implementation UITableViewCell (UnNuLL)

- (NSIndexPath *)getIndexPath
{
    //IOS7 OR LATER AVALIABLE
    UITableView *tableView = (UITableView *)self.superview.superview;
    return [tableView indexPathForCell:self];
}

@end

已经弃用,欢迎移步我的小专栏:
https://xiaozhuanlan.com/dahuihuiiOS

你可能感兴趣的:(cell中事件代理到tableView进行操作(如删除)的实现)