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
【cell中事件代理到tableView进行操作(如删除)的实现】已经弃用,欢迎移步我的小专栏:
https://xiaozhuanlan.com/dahuihuiiOS
推荐阅读
- 在线广告中的cookie|在线广告中的cookie Matching
- 行人|行人 路人
- 大清王朝的外交内斗(阻开铁路的外交官刘锡鸿纪事中)
- 临终关怀在中国的未来发展
- 生活中的“爽妹子”们,自信一点!
- 力扣之反转字符串中的单词 III
- Vue的事件修饰符
- 发展云计算产业|发展云计算产业 人才先行 | 2017年中国私有云调查报告发布
- 资源道具化
- 财经|网易To B,柔外刚中