首页 > 系统 > iOS > 正文

iOS UITableViewCell侧滑删除遇到的坑

2019-11-09 18:53:51
字体:
来源:转载
供稿:网友

做项目中遇到一个小问题,给大家分享一下

以前做删除是这样,实现UITableView的代理方法即可

// 设Cell编辑- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{    return YES;}// 定义编辑样式- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{    return UITableViewCellEditingStyleDelete;}
// 进入编辑模式,进行删除操作
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{    if (editingStyle == UITableViewCellEditingStyleDelete) {        // Delete the row from the data source.      }}// 修改编辑按钮文字- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{    return @"删除";}

OK 上面可以,但是因为项目支持iOS8.0以上,并且需要左滑删除和重命名两种编辑模式,所以我选用了IOS8.0以后的新代理方法

-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{        UITableViewRowAction *renameRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"重命名" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {               // 重命名操作    }];    UITableViewRowAction *deleteRoWAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {                 // 删除操作    }];       return @[deleteRoWAction,renameRowAction];}

这时候侧滑,iOS8真机直接侧滑没有反应,调试显示没走新代理方法(iOS9以上真机木有问题)。哎 说好的支持iOS8.0以上呢?

解决办法:

很简单就是把旧的代理方法写上就OK,里面什么也不做

// 进入编辑模式,进行删除操作- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{    }应该是iOS8.0中 若旧的代理方法没有实现,然后就调用新的代理方法


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表