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

  • 相关阅读:
    移动端web页面使用position:fixed问题
    登录的一些心得
    响应式网页设计
    xss(跨站脚本攻击),crsf(跨站请求伪造),xssf
    HTML5 离线功能介绍
    webapp开发经验和资料
    学习Java,值得你留意的问题(1)更名为《学习Java,容易被你忽略的小细节(1)》
    Python下搜索文件
    从百度地图API接口批量获取地点的经纬度
    获取代理IP地址(BeautifulSoup)
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/7779763.html
Copyright © 2011-2022 走看看