UITableView编辑模式
Posted huahuahu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UITableView编辑模式相关的知识,希望对你有一定的参考价值。
UITableView有两种模式,普通模式和编辑模式。在编辑模式下可以对cell进行排序、删除、插入等等。
如何进入编辑模式
调用tableView的setEditing(editing: Bool, animated: Bool)
方法。进入编辑模式以后发生了什么
向每个cell发送
setEditing:animated:
方法进入编辑模式以后cell的变化
普通模式下cell的contentview的bounds就是cell的bounds.
编辑模式下,cell有三部分组成,左边的Editing control,中间的contentview,右边的reordering control。这时contentview的位置和大小都发生了变化。
所以一般情况下,把需要展示的东西加到contentview上,而不是cell上。文档是也有说明。The content view of a UITableViewCell object is the default superview for content displayed by the cell. If you want to customize cells by simply adding additional views, you should add them to the content view so they will be positioned appropriately as the cell transitions into and out of editing mode
删除模式
指定模式为删除模式
func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { return .Delete }
定制删除提示语
func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? { return "我删除啦" }
这时,cell右侧又多出来一个部分,叫做
UITableViewCellDeleteConfirmtionView
,不同的删除提示语,长度不一样。
插入模式
将style设为insert就好
func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { return .Insert }
展示右边的排序按钮
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) { //do something }
实现这个方法就好,即使什么都不做
展示多选按钮
tableView?.allowsMultipleSelectionDuringEditing = true tableView?.tintColor = UIColor.blackColor()
swipe to delete
实现相应的代理方法
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { }
这个方法里不能调用
setEditing(_:animated:)
方法tableView(_:editingStyleForRowAt:)
方法必须返回delete
以上是关于UITableView编辑模式的主要内容,如果未能解决你的问题,请参考以下文章