iOS UITableViewCell侧滑删除遇到的坑

    xiaoxiao2021-03-26  30

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

    以前做删除是这样,实现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中 若旧的代理方法没有实现,然后就调用新的代理方法

    转载请注明原文地址: https://ju.6miu.com/read-662994.html

    最新回复(0)