一、插入、删除、移动、多选

方法一:

Cell的插入、删除、移动都有一个通用的方法,就是更新tableView的数据源,再reloadData,这样做实现上是简单一点,但是reloadData是刷新整个tableView,消耗性能。

方法二:

针对指定的位置进行插入、删除、移动

步骤:

1.让tableView进入编辑状态:

  - (void)setEditing:(BOOL)editing animated:(BOOL)animated

2.tableView会执行代理返回编辑的种类:

  - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

  插入:UITableViewCellEditingStyleInsert,左侧出现红色删除按钮

  删除:UITableViewCellEditingStyleDelete,左侧出现绿色添加按钮

  移动:UITableViewCellEditingStyleNone,右侧出现灰色移动按钮

  多选:UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert,左侧出现圆形选择框

3.在插入、删除、多选的时候右侧的移动按钮也会出现,这是因为tableView的代理- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath默认返回YES,所以默认编辑的时候可以移动,不需要的设置成NO就行了

4.执行tableView实现插入、删除、移动、多选

  插入:- (void)insertRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

  删除:- (void)deleteRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

  移动:不需要实现方法,移动后会执行回调- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

  多选:不需要什么实现方法,cell的selectionStyle不能为UITableViewCellSelectionStyleNone不然没有多选效果,选中的一个cell的时候会执行代理- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(nonnull NSIndexPath *)indexPath ,取消选中一个cell的时候执行回调:- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

二、系统刷新控件

在TableViewController中可以使用系统的刷新控件UIRefreshControl

使用方法:

1.创建UIRefreshControl

  //初始化

  UIRefreshControl *rc = [[UIRefreshControl alloc] init];

  //设置Title

  rc.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];

  //响应方法

  [rc addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];

  //赋给TableViewController

self.refreshControl = rc;

- (void)refresh{

  //控件状态,是否在刷新状态

if (self.refreshControl.isRefreshing) {

self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"加载中"];

}

}

最新文章

  1. 浅谈c#中的delegate和event了
  2. java模拟面试 试题
  3. Django 一对多,多对多关系解析
  4. 网络编程:Http通信与Socket通信
  5. php Calender(日历)代码
  6. 【wireshark】打开后显示There are no interfaces on which a capture can be done
  7. NOR Flash擦写和原理分析 (二)
  8. 《Secrets of the JavaScript Ninja》:JavaScript 之运行时代码
  9. Transaction Log Truncation
  10. P125、面试题19:二叉树的镜像
  11. python一键刷屏
  12. (转)60s快速分析Linux性能
  13. Luogu P2827 蚯蚓
  14. Xe7 System.Json解析数据格式
  15. html开发环境
  16. &#39;Settings&#39; object has no attribute &#39;TEMPLATE_DEBUG&#39; 的解决方法
  17. Java50道经典习题-程序21 求阶乘
  18. iOS学习之UITableView中Cell的操作
  19. vs生成命令和属性的宏
  20. iar注释快捷键

热门文章

  1. Oracle数据加载之sqlldr工具的介绍
  2. node静态资源管理变迁之路
  3. 使用vs中的发布功能发布asp.net core项目时遇到ERROR_CERTIFICATE_VALIDATION_FAILED错误
  4. 记录Python学习中的几个小问题
  5. apache配置虚拟主机
  6. ArcGIS制图之Maplex自动点抽稀
  7. 【转】jquery-取消冒泡
  8. HDU 4343 D - Interval query 二分贪心
  9. git恢复被修改的文件
  10. 深入分析Cookie的安全性问题
  11. UVA 11624 Fire! BFS搜索
  12. webpack2使用ch8-loader解析less less自动添加浏览器前缀
  13. linux下安装配置jdk(解压版)
  14. 【tensorflow】学习笔记
  15. 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
  16. cors解决跨域
  17. 利用Fiddler拦截接口请求并篡改数据
  18. libxml2 使用教程【转】
  19. IOS URL scheme
  20. PHP队列的实现 算法