码迷,mamicode.com
首页 > 移动开发 > 详细

UITableView的编辑(插入、删除、移动)

时间:2015-03-19 21:44:26      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

先说两个方法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的编辑(插入、删除、移动)

标签:

原文地址:http://www.cnblogs.com/xjshi/p/4351525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!