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

方法一:

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:@"加载中"];

}

}

与TableView插入、删除、移动、多选,刷新控件的更多相关文章

  1. SYRefresh 一款简洁易用的刷新控件 支持tableview,collectionview水平垂直刷新功能

    SYRefresh 地址: https://github.com/shushaoyong/SYRefresh 一款简洁易用的刷新控件 示例程序:   默认刷新控件使用方法: //添加头部刷新控件 Sc ...

  2. iOS:下拉刷新控件UIRefreshControl的详解

    下拉刷新控件:UIRefreshControl 1.具体类信息: @interface UIRefreshControl : UIControl //继承控制类 - (instancetype)ini ...

  3. # iOS 10 适配 # 适配刷新控件 以MJRefresh 为例

    在iOS10中ScrollView 添加了一个refreshControl的东西 - - 不知道水果公司做了什么  导致原有的刷新控件类刷新后frame.y 向下偏移了20 起初以为是水果调整了sta ...

  4. 上拉加载下拉刷新控件WaterRefreshLoadMoreView

    上拉加载下拉刷新控件WaterRefreshLoadMoreView 效果: 源码: // // SRSlimeView // @author SR // Modified by JunHan on ...

  5. 自定义下拉刷新控件-CBStoreHouseRefreshControl

    本文转载至 http://www.cocoachina.com/ios/20141110/10177.html iOS开发自定义刷新CBStoreHouseRefres 介绍 这是一款在Storeho ...

  6. [Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. Android 解决下拉刷新控件和ScrollVIew的滑动冲突问题。

    最近项目要实现ScrollView中嵌套广告轮播图+RecyleView卡片布局,并且RecyleView按照header和内容的排列样式,因为RecyleView的可扩展性很强,所以我毫无疑问的选择 ...

  8. ios--->上下拉刷新控件MJRefresh

    上下拉刷新控件MJRefresh 一.类结构 MJRefreshComponent.h MJRefreshHeader.h MJRefreshFooter.h MJRefreshAutoFooter. ...

  9. android官方下拉刷新控件SwipeRefreshLayout的使用

    可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...

随机推荐

  1. Emit学习(3) - OpCodes - 动态添加属性、构造函数、方法

    上一篇介绍了 IL 的部分, 基础的部分, 暂时就介绍到那里了, 接下来要进入代码编写阶段了. 今天的主题是 在代码运行的过程中, 去动态的创建类, 属性, 方法. 来源:http://www.cnb ...

  2. 自己写的一个简单的jQuery提示插件

    代码: /** * 2014年11月13日 * 提示插件 */ (function ($) { $.fn.tips = function (text) { var divtipsstyle = &qu ...

  3. 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...

  4. asp.net判断FileUpload选择的文件是否是图片

    假如keleyi.aspx页面中有一个ID为fuHovertree的FileUpload控件,那么C#代码怎么判断fuHovertree选择的文件是否是图片呢? 代码如下: HttpPostedFil ...

  5. js中局部变量必须用var去声明

    js中的变量与其他的脚本语言都是很不一样的,在function中你如果不用var 声明一个变量,那么这个变量将在全局可见,也就相当于创建了全局变量.所以在function中声明变量尽量都是用var来声 ...

  6. 介绍开源的.net通信框架NetworkComms框架 源码分析(十九 )ConnectionIncomingData

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  7. MEF入门之不求甚解,但力求简单能讲明白(四)

    上一篇我们已经可以获取各种FileHandler的实例和对应的元数据.本篇,我们做一个稍微完整的文件管理器. 1.修改接口IFileHandler,传入文件名 namespace IPart { pu ...

  8. UITextView 文本垂直居中

    var center=textView.Bounds.Size.Height - textView.ContentSize.Height; center = center < ? : cente ...

  9. 关于ASP.NET的“Forms身份验证”

    目录结构如图如示: 如果用户没有通过身份验证则跳转到登录页面让用户登录,在配置文件的<system.web></system.web>结点下添加如下代码: <!--身份验 ...

  10. Java中用户界面布局

    绝对布局Absolute 通过放大或缩小界面的时候,组件大小和位置不会发生变化 浮动布局FlowLayout 调整应用程序窗口的大小时,组件将立刻重新排列 边界布局Border Layout 该位置有 ...