博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS11 UITableViewCell滑动事件改动
阅读量:6199 次
发布时间:2019-06-21

本文共 2684 字,大约阅读时间需要 8 分钟。

在iOS8之后,苹果官方增加了UITableView的右滑操作接口

optional func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]?复制代码

在这个方法中可以定义所需要的操作按钮(删除、置顶等),这些按钮的类就是UITableViewRowAction。这个类定义按钮的显示文字、背景色和事件。并且返回数组的第一个元素在UITableViewCell的最右侧显示,最后一个元素在最左侧显示。

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {        let deleteAction = UITableViewRowAction.init(style: .destructive, title: "Delete") { (action, indexpath) in            self.dataArray.removeObject(at: indexpath.row)            tableView.deleteRows(at: [indexpath], with: .left)        }        let markAction = UITableViewRowAction.init(style: .normal, title: "Mark") { (action, indexpath) in                    }        return [deleteAction, markAction]}复制代码

在iOS11中新增了两个代理方法

- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath;- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath;复制代码

新的方法提供了:左侧按钮自定义、右侧按钮自定义、自定义图片、背景颜色,通过 UIContextualAction 来设置

// 左侧按钮自定义override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {        let leftAction = UIContextualAction.init(style: .normal, title: "leftAction", handler: { (action, view, completionHandler) in            completionHandler(true)        })        let configuration = UISwipeActionsConfiguration.init(actions: [leftAction])        return configuration}// 右侧按钮自定义    override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {        // 删除操作        let deleteAction = UIContextualAction.init(style: .destructive, title: "delete", handler: { (action, view, completionHandler) in            completionHandler(true)        })        // 给按钮设置背景图片        deleteAction.image = UIImage.init(named: "icon_del")        let addAction = UIContextualAction.init(style: .normal, title: "add") { (action, view, completionHandler) in                    }        // 可以修改按钮的背景色        addAction.backgroundColor = UIColor.purple        let configuration = UISwipeActionsConfiguration.init(actions: [deleteAction, addAction])        return configuration}复制代码

创建UIContextualAction对象时,UIContextualActionStyle有两种类型,如果是置顶、已读等按钮就使用。UIContextualActionStyleNormal类型,delete操作按钮可使用UIContextualActionStyleDestructive类型,当使用该类型时,如果是左滑操作,一直向左滑动某个cell,会直接执行删除操作,不用再点击删除按钮。

滑动操作还有一个需要注意的点,当cell高度较小时,会只显示image,不显示title,当cell高度够大时,会同时显示image和title。

转载地址:http://kbnca.baihongyu.com/

你可能感兴趣的文章
pycharm2017.3永久破解
查看>>
Mysql innodb 存储引擎的性能优化
查看>>
我的友情链接
查看>>
社区内容的品质的纯粹性
查看>>
分布式编译工具increbuild
查看>>
magento 插件后台访问url路径的改变
查看>>
主DNS服务器部署文档(for linux平台)
查看>>
UML类图与类的关系详解
查看>>
云计算之openstack-newton版搭建(三)
查看>>
系统自动化安装
查看>>
几个jquery分发库速度测评
查看>>
spring的DI
查看>>
linux命令
查看>>
RedHat 学习笔记 基于ssl的httpd服务配置 (openssl创建CA)
查看>>
网站防御DDOS的PHP代码
查看>>
Android程序的调试--善用Log
查看>>
队列Queue
查看>>
浅析linux(三)
查看>>
mysql控制台导入导出数据库
查看>>
Win7 64位编译Python扩展解决”error: Unable to find vcvarsa
查看>>