美文网首页iOS ScrollView类族iOS程序猿程序员
实现UITableView左滑自定义选项

实现UITableView左滑自定义选项

作者: ForeverYoung21 | 来源:发表于2015-10-26 23:40 被阅读7488次

    当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:方法,在这个方法里什么都不用做即可。)

    相关文章

      网友评论

      本文标题:实现UITableView左滑自定义选项

      本文链接:https://www.haomeiwen.com/subject/flexhttx.html