实现UITableView左滑自定义选项

当UITableView进入编辑模式,在进行左滑操作的cell的右边,默认会出现Delete按钮,如何自定义左滑出现的按钮呢?

只需要实现UITableView下面的这个代理方法。

- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewRowAction *likeAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"喜欢" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
      // 实现相关的逻辑代码
      // ...
      // 在最后希望cell可以自动回到默认状态,所以需要退出编辑模式
      tableView.editing = NO;
    }];

    UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
      // 首先改变model
      [self.books removeObjectAtIndex:indexPath.row];
      // 接着刷新view
      [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
      // 不需要主动退出编辑模式,上面更新view的操作完成后就会自动退出编辑模式
    }];

    return @[deleteAction, likeAction];
}

此时左滑就会出现两个按钮,一个是喜欢,另一个是删除。出现的顺序和在这个方法中返回的数组中的元素顺序相关。

如果实现了上述方法,那么之前提到过的tableView:commitEditingStyle:forRowAtIndexPath:tableView: titleForDeleteConfirmationButtonForRowAtIndexPath:方法就不会再调用了。(如果为了兼容以前的版本,那么需要实现tableView:commitEditingStyle:forRowAtIndexPath:方法,在这个方法里什么都不用做即可。)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容