代码改变世界

iphone的tableview滑动删除

2012-08-01 16:44  Mr.Xer  阅读(296)  评论(0编辑  收藏  举报

如果要允许用户删除表格内的对象,需要打开表格的编辑功能。这样表中的每个单元格就都会在左侧显示一个红色的删除图标。每个单元格在编辑过程中都会自动缩进:

 

  1. [ _table setEditing:YES animated:YES ];   

 

 

这个操作应当由导航栏按钮来触发,比如一个标有Edit的按钮,或者是某些类似操作。编辑结束时,使用同一个方法来退出编辑模式:

 

  1. [ _table setEditing: NO animated: YES ];   
  1.   

 

 编辑过程中,用户可以从表格中删除记录。用户会看到一个删除确认信息。确认之后,数据源的commitEditingStyle方法就会得到通知,从而令 应用程序得知有一个删除请求。这个方法也属于UITableViewDataSource协议。你需要从数据源中删除对应的数据,来满足这个请求。你还要 指示表格视图删除该行:

 

  1. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle) editingStyle forRowAtIndexPath:(NSIndexPath *) indexPath    
  2. {    
  3.     if (editingStyle == UITableViewCellEditingStyleDelete) {    
  4.           
  5.         [_values removeObjectAtIndex:indexPath.row];  
  6.         [ _table setEditing: NO animated: YES ];   
  7.         [tableView reloadData];  
  8.     }    
  9. }   

 

 



提示

如果你的代理类中有这个方法,那么扫动删除功能会自动生效。

你可以向deleteRowsAtIndexPaths方法传递一个索引路径的数组,从而在表格中删除一到多行。你还可以在几个预定义的动画效果中指定一个,在删除单元格时显示。支持表3-9所示的动画效果。