UITableView的编辑(插入、删除、移动)
先说两个方法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的编辑(插入、删除、移动)的更多相关文章
- iOS - UITableView 编辑(cell的插入, 删除, 移动)
UITableView Cell的插入/删除 核心API Class : UITableView Delegate : UITableViewDataSource, UITableViewDelega ...
- C# 如何在Excel表格中插入、编辑和删除批注
概述 为文档添加必要的批注可以给文档使用者提供重要的提示信息,下面的示例中,将介绍通过C#编程语言来给Excel表格中的指定单元格内容添加批注,此外,对于已有的批注,如果需要修改,我们也可以进行编辑或 ...
- C# 实现对PPT插入、编辑、删除表格
现代学习和办公当中,经常会接触到对表格的运用,像各种单据.报表.账户等等.在PPT演示文稿中同样不可避免的应用到各种数据表格.对于在PPT中插入表格,我发现了一个新方法,不过我用到了一款免费的.NET ...
- iOS开发 -------- UITableView的编辑
一 核心API Class: UITableView Delegate: UITableViewDataSource, UITableViewDelegate 涉及到的API: 插入和删除 1 /** ...
- UITableView的编辑模式
UITableView可以分普通模式和Editing模式两种,这里我们着重讨论Editing模式,Editing模式中又分三种操作:Insert.Delete. Reallocted.Insert和D ...
- [LeetCode] Insert Delete GetRandom O(1) - Duplicates allowed 常数时间内插入删除和获得随机数 - 允许重复
Design a data structure that supports all following operations in average O(1) time. Note: Duplicate ...
- [LeetCode] Insert Delete GetRandom O(1) 常数时间内插入删除和获得随机数
Design a data structure that supports all following operations in average O(1) time. insert(val): In ...
- [转]GridView中直接新增行、编辑和删除
本文转自:http://www.cnblogs.com/gdjlc/archive/2009/11/10/2086951.html .aspx <div><asp:Button ru ...
- 《ASP.NET1200例》在DataList里编辑和删除数据
学习内容:如何创建一个支持编辑和删除数据的DataList.增加编辑和删除功能需要在DataList的ItemTemplate和EditItemTemplate里增加合适的控件,创建对应的事件处理,读 ...
- UI基础:UITableView的编辑和移动
相对UITableViiew进行编辑,必须设置代理,让代理遵循UITableViewDataSource和UITableViewDelegate协议.因为需要代理实现协议中几个必须的方法. UITab ...
随机推荐
- 想加入一行代码吗?使用<code>标签
在介绍语言技术的网站中,避免不了在网页中显示一些计算机专业的编程代码,当代码为一行代码时,你就可以使用<code>标签了,如下面例子: <code>var i=i+300;&l ...
- Sql Server使用技巧
1.修改表的字段时,提示不能更改: 工具>选项>设计器>取消 阻止保存要求重新创建表的更改 2.更改选择多少行,编辑多少行: 工具>选项>Sql Server对象资源管理 ...
- angularjs中ng-repeat-start与ng-repeat-end用法实例
<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <me ...
- 关于auto和decltype
auto会忽略顶层const,保留底层const ; const int* const p = &i; auto p2 = p; //p2是const int*,不是const int* co ...
- 零散的笔记:jquery中的事件
1.替代mouseover和mouseout的事件 jquery的mouseover和mouseout事件在移到子页面时也会触发,这在移到一级菜单弹出二级菜单,移到二级菜单时一级菜单也要显示时,这两个 ...
- table-css
- jQuery放大镜插件jqzoom使用
源码下载,使用指导地址:http://www.mind-projects.it/projects/jqzoom/ 使用教程: 1.导入库文件 <script src="../js/jq ...
- jquery 导航栏目
JS 文件<script type="text/javascript"> $(document).ready(function(){ $(".level1 & ...
- WinDebug 常用命令表【摘】
启动, 附加进程, 执行和退出(Starting, Attaching, Executing and Exiting) ======================= Start -> All ...
- forever 使用
安装: $npm install -g forever y@y:ydkt$ forever start server/app.js warn: --minUptime not set. Default ...