表视图一旦进入删除和插入状态,单元格的左边就会出现一个“编辑控件”,如图1所示。这个区域会显示删除控件“-”或插入控件“+”,具体显示哪个图标在表视图委托协议的tableView:editingStyleForRowAtIndexPath:方法中设定。
图1、单元格编辑控件
图2、单元格删除控件
图3、单元格删除确认控件
要注意的是。在iOS中还有一个鲜为人知的删除手势,那就是在单元格中从右往左滑动手势,也会在单元格右边出现一个Delete按钮。
插入数据时,新插入的单元格会出现在表视图的后面,如图4所示。当点击插入控件时,会增加一行数据,此操作可重复进行。
图4、单元格插入
删除和插入单元格操作的核心是如下两个方法:表视图委托对象的tableView:editingStyleForRowAtIndexPath:方法和表视图数据源对象的tableView:commitEditingStyle:forRowAtIndexPath:方法。删除和插入单元格的时序图如图5所示。
图5、删除和插入单元格的时序图
setEditing:animated:方法设定视图能否进入编辑状态,然后调用委托协议中的tableView:editingStyleForRowAtIndexPath:方法进行单元格编辑图标的设置。当用户删除或修改控件时,委托方法向数据源发出tableView:commitEditingStyle:forRowAtIndexPath:消息实现删除或插入的处理。