先说两个方法beginUpdates和endUpdates,几点注意事项:

  • 一般我们把行、块的插入、删除、移动写在由这两个方法组成的函数块中。如果你不是在这两个函数组成的块中调用插入、删除、移动方法,表的属性(比如行数)可能失效。
  • 一般也不应该在由这两个函数组成的函数块中调用reloadData,如果你这么做了,那么所有的动画都要自己进行。
  • 这两个方法组成的块,可以嵌套。
  • 同一个块中的插入、删除操作,先处理完删除操作才会执行插入操作,而不管在它们在块中的顺序。

UITableView是否处于编辑模式取决于它的editing属性。当处于编辑模式时,在每一个cell的左侧会显示一个插入或删除的控件,具体显示什么取决于cell是怎么配置的。触摸一个控件的时候会让tableView调用数据源方法tableView:commitEditingStyle:forRowAtIndexPath:。可以调用setEditing:animated:让tableView进入或者退出编辑模,表的数据源可以有选择的拒绝cell进入编辑模式,通过实现tableView:canEditRowAtIndexPath:。

当一个tableView处于编辑状态时,它的代理通过 tableView:editingStyleForRowAtIndexPath:返回每个可编辑的cell所处的状态(插入、删除)。当一个tableView收到setEditing:animated:消息时,它给每个每一个可见行的UITableViewCell对象发送相同的消息,接着它给数据源和代理发送一连串消息像下面图中描述的那样。

当用户swipe across一行显示delete按钮,在上面图中的调用顺序有一个变化。当用户swipe一行要删除的时候,tableView首先检查它的数据源是否实现了tableView:commitEditingStyle:forRowAtIndexPath:方法,如果实现了,tableView给自己发送setEditing:animated:消息,进入编辑模式。在这个“swipe to delete”模式,tableView不显示编辑和重新排序控件。因为这是一个用户驱动事件,it also brackets the messages to the delegate inside of two other messages:tableView:willBeginEditingRowAtIndexPath: and tableView:didEndEditingRowAtIndexPath:.(怎么翻译合适^.^)。通过实现这些方法,代理可以合适的更新tableView的外观。

【后边有点复杂,我先研究研究】

UITableView的编辑(插入、删除、移动)的更多相关文章

  1. iOS - UITableView 编辑(cell的插入, 删除, 移动)

    UITableView Cell的插入/删除 核心API Class : UITableView Delegate : UITableViewDataSource, UITableViewDelega ...

  2. C# 如何在Excel表格中插入、编辑和删除批注

    概述 为文档添加必要的批注可以给文档使用者提供重要的提示信息,下面的示例中,将介绍通过C#编程语言来给Excel表格中的指定单元格内容添加批注,此外,对于已有的批注,如果需要修改,我们也可以进行编辑或 ...

  3. C# 实现对PPT插入、编辑、删除表格

    现代学习和办公当中,经常会接触到对表格的运用,像各种单据.报表.账户等等.在PPT演示文稿中同样不可避免的应用到各种数据表格.对于在PPT中插入表格,我发现了一个新方法,不过我用到了一款免费的.NET ...

  4. iOS开发 -------- UITableView的编辑

    一 核心API Class: UITableView Delegate: UITableViewDataSource, UITableViewDelegate 涉及到的API: 插入和删除 1 /** ...

  5. UITableView的编辑模式

    UITableView可以分普通模式和Editing模式两种,这里我们着重讨论Editing模式,Editing模式中又分三种操作:Insert.Delete. Reallocted.Insert和D ...

  6. [LeetCode] Insert Delete GetRandom O(1) - Duplicates allowed 常数时间内插入删除和获得随机数 - 允许重复

    Design a data structure that supports all following operations in average O(1) time. Note: Duplicate ...

  7. [LeetCode] Insert Delete GetRandom O(1) 常数时间内插入删除和获得随机数

    Design a data structure that supports all following operations in average O(1) time. insert(val): In ...

  8. [转]GridView中直接新增行、编辑和删除

    本文转自:http://www.cnblogs.com/gdjlc/archive/2009/11/10/2086951.html .aspx <div><asp:Button ru ...

  9. 《ASP.NET1200例》在DataList里编辑和删除数据

    学习内容:如何创建一个支持编辑和删除数据的DataList.增加编辑和删除功能需要在DataList的ItemTemplate和EditItemTemplate里增加合适的控件,创建对应的事件处理,读 ...

  10. UI基础:UITableView的编辑和移动

    相对UITableViiew进行编辑,必须设置代理,让代理遵循UITableViewDataSource和UITableViewDelegate协议.因为需要代理实现协议中几个必须的方法. UITab ...

随机推荐

  1. XCode的一些调试技巧

    XCode 内置GDB,我们可以在命令行中使用 GDB 命令来调试我们的程序.下面将介绍一些常用的命令以及调试技巧. po 命令:为 print object 的缩写,显示对象的文本描述(显示从对象的 ...

  2. 使用mailto在网页中链接Email地址

    <a>标签还有一个作用是可以链接Email地址,使用mailto能让访问者便捷向网站管理者发送电子邮件.我们还可以利用mailto做许多其它事情.下面一一进行讲解,请看详细图示: 注意:如 ...

  3. WPF实现摄像头镜像翻转

    之前的项目需要镜像翻转摄像头视频,使用Aforge.Net来处理视频. 一开始考虑直接从Aforge.Net读取没一帧视频图片,然后复制给WPF的Image控件,这种方法基本很卡,所以放弃了. 考虑到 ...

  4. 『重构--改善既有代码的设计』读书笔记----Replace Method with Method Object

    有时候,当你遇到一个大型函数,里面的临时变量和参数多的让你觉得根本无法进行Extract Method.重构中也大力的推荐短小函数的好处,它所带来的解释性,复用性让你收益无穷.但如果你遇到上种情况,你 ...

  5. js获取本月、三个月、今年的日期插件dateHelp

    最近看了一些关于面向对象的知识,最近工作中在做统计查询的时候需要用到本月.近三个月.今年的日期范围,所以下面用用面向对象的思想写了一个获取日期的插件,大家可以借鉴使用. 直接通过new DateHel ...

  6. Bootstrap_排版_列表

    一.基本列表 <h5>普通列表</h5> <ul> <li>列表项目</li> <li>列表项目</li> < ...

  7. C语言基础学习运算符-关系运算符

    比较大小 首先,我们得先了解一下布尔类型.C语言的C99标准支持布尔类型,关键字为_Bool,用于表示逻辑值true与false.C语言用值1表示true, 用值0表示false.因此布尔类型实际上是 ...

  8. Android模拟器genymotion安装与eclipse 插件安装

    推荐一款Android模拟器"Genymotion",有点速度快,占用资源少,可整合eclipse.闲话少谈,看安装步骤. 1.下载地址:https://www.genymotio ...

  9. tomcat jar包加载顺序

    加载顺序: 1. $java_home/lib 目录下的java核心api 2. $java_home/lib/ext 目录下的java扩展jar包 3. java -classpath/-Djava ...

  10. 使用JQUERY实现局部页面定时刷新

    没办法,运维会一点点前端,还是有好处的.. 说不定,BOOTSTRAP也得会一点点.. 本想用流式输出的搞定的,但没搞定,就取巧了... 代理简单: <script src="//cd ...