zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/7779763.html
Copyright © 2011-2022 走看看