http://canyingxiangkui.blog.163.com/blog/static/2030681192012102111588558/
tableView:commitEditingStyle:forRowAtIndexPath:方法不仅在删除时被调用,追加单元时也会被调用,只有在参数editingStyle值为UITableViewCellEditingStyleDelete时才会执行删除处理。首先从数据资源中删除对应的项目,接着调用tableview的deleteRowsAtIndexPaths:withRowAnimation:方法删除对应的单元格。deleteRowsAtIndexPaths:WithRowAnimation:方法删除对应的单元格。deleteRowsAtIndexPaths:withRowAnimation:方法的第一个参数中一次性以NSArry数组形式传入多个NSIndexPath是可以删除多个单元格,这里可只传入一个indexPath.另外,通过在withRowAnimation参数中设置不同的常量单元格在消失时可呈现不同动画形式。
另一个需要修改的是保存数据资源的数据类。
单元删除/追击阿时的动画
进行单元删除或者插入时,可以在删除或者插入过程中伴随动画。例如前一小节中使用到的deleteRowsAtIndexPaths:withRowAnimation:方法中,根据参数withRowAnimation中指定的常量显示不同的动画效果。
UITableViewRowAnimationFade 以淡出动画形式删除单元格/以淡入动画形式删除单元格
UITableViewRowAnimationRight 被删除单元格向右侧移动/被追加单元格从右侧出现
UITableViewRowAnimationLeft 被删除单元向左侧移动/被追加单元从左侧出现
UITableViewRowAnimationTop 被删除单元向上放移动/被追加单元从上方出现
UITableViewRowAnimationBottom 被删除单元向下方移动/被追加单元从下方出现
UITableViewRowAnimationNone 无动画效果
删除按钮名称的变更
- (NSString *)tableView:(UITableView *)tableView titleForDeletefirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
return @"删除";
}
单元的插入
实现了UITableDelegate协议的tableView:editingStyleForRowAtIndexPath:方法后就能够在表格中进行插入新单元。仅在针对最后一个大院的情况下此方法返回值为UITableViewCellDditingStyleInsert其他单元的情况下返回UITableViewCellEditingStyleDelete.
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath
{
//编辑模式的情况下,将最后的row变成插入模式
if(tableView.editing && dataSource_.count <= indexPath.row + 1){
return UITableViewCellEditingStyleInsert;
} else {
return UITableViewCellEditingStyleDelete;
}
}