UITableView左滑显示选择

使用UITableViewRowAction实现UITableViewCell左滑选择

1、在iOS8后, 实现UITableView中滑动显示删除,发送,修改等更多的按钮时,只需一个代理方法和一个类即可完成.

2、iOS8的UITableViewDelegate协议中实现了一个方法,返回值是数组:

- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{}

可以在方法内部写好几个按钮,然后放到数组中返回,那些按钮的类就是UITableviewRowAction

[UITableViewRowAction rowActionWithStyle:<#(UITableViewRowActionStyle)#> title:<#(nullable NSString *)#> handler:<#^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath)handler#>]

3、如果自己设定一个或多个按钮,系统自带的删除按钮就消失了

效果图
实现了UITableViewRowAction的按钮样式:
这里写图片描述

//按钮顺序
@[sendAction, deleteAction, action];

根据效果图, 和按钮的放入数组的顺序, 我们可以知道: 最先放入数组的按钮显示在最右边,最后放入的显示在最左边.

系统自带的样式:
这里写图片描述

代码:

/**
 *  设置表格可编辑
 */
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
    return YES;
}

/**
 *  设置修改 cell 返回的样式
 */
- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.section == 0) {

        UITableViewRowAction *sendAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"发送" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
            NSLog(@"点击了发送");
        }];
        sendAction.backgroundColor = [UIColor orangeColor];

        UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
            NSLog(@"点击了删除");
        }];

        UITableViewRowAction *action = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"修改" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
            NSLog(@"点击了修改");
        }];
        action.backgroundEffect =  [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];

        return @[sendAction, deleteAction, action];
    } else if (indexPath.section == 1){
        UITableViewRowAction *action = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"修改" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
            NSLog(@"点击了修改");
        }];
        //毛玻璃特效类型
        /**
         *  UIBlurEffectStyleExtraLight,
         *  UIBlurEffectStyleLight,
         *  UIBlurEffectStyleDark
         */
        action.backgroundEffect =  [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
        return @[action];
    }
    return nil;
}

结果
完整Demo: GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值