TableView 编辑与扫动删除

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

 
 
  1. [ self.tableView setEditing:YES animated:YES ]; 

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

 
 
  1. [ self.tableView setEditing: NO animated: YES ];

[self.thetableview setEditing:!self.thetableview.editing animated:YES];

标识符号的确定

- (UITableViewCellEditingStyle)tableView:(UITableView*)tableView            editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath {     if(indexPath.row == cellnum-1){         return UITableViewCellEditingStyleNone;     }     return UITableViewCellEditingStyleDelete; }

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

 
 
  1. - (void)tableView:(UITableView *)tableView  
  2.     commitEditingStyle:(UITableViewCellEditingStyle) editingStyle  
  3.     forRowAtIndexPath:(NSIndexPath *) indexPath  
  4. {  
  5.     if (editingStyle == UITableViewCellEditingStyleDelete) {  
  6.          NSLog(@'Deleted section %d, cell %d',  
  7.              [ indexPath indexAtPosition: 0 ],
    [ indexPath indexAtPosition: 1 ]);  
  8.  
  9.          /* 添上代码,将单元格从你的数据中删除 */  
  10.  
  11.          /* 从表格中删除单元格 */  
  12.  
  13.          NSMutableArray *array = [ [ NSMutableArray alloc ] init ];  
  14.          [ array addObject: indexPath ];  
  15.          [ self.tableView deleteRowsAtIndexPaths: array  
  16.                 withRowAnimation: UITableViewRowAnimationFade  
  17.          ];  
  18.     }  

提示

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

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

 

表3-9

   

    

UITableViewRowAnimationFade

单元格淡出

UITableViewRowAnimationRight

单元格从右侧滑出

UITableViewRowAnimationLeft

单元格从左侧滑出

UITableViewRowAnimationTop

单元格滑动到相邻单元格之上

UITableViewRowAnimationBottom

单元格滑动到相邻单元格之下


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值