Posts Tagged ‘划动删除’
iPhone表格中划动删除单元格
iPhone上的程序很多用表格UITableView来显示数据、做布局等。 当用UITableView显示数据是经常会需要删除、插入数据条目。 SDK提供两种删除UITableViewCell的方法
- 设置整个表格为编辑模式,如果没有做其他编辑风格(editing style),就会在每个单元格左面有一个圆形红色删除按钮,点击该按钮会在右边显示“Delete”按钮
- 在单元格上划动,会在划动的单元格右边显示“Delete”按钮, 这是SDK提供的快捷删除单元格的方法, 官方说法是 swipe to delete
要完成删除的动作必须在delegate中实现这个方法
1 2 3 | - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { } |
当点击“Delete” 删除按钮是会发送该消息, 在此可以处理删除。 此外如果想在删除按钮显示前以及删除动作完成后调整布局, 可以在delegate中实现下面两个方法
1 2 3 4 5 6 7 8 | // - (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath { } // - (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath { } |
需要注意的是,如果表格是在UIViewController里并且table的delegate是ViewController, 那么table必须是viewcontroller的view,而不是能是viewController 的view的一个子视图,比如在UIViewController的loadView实现中,以往会这么写
1 2 3 4 5 6 7 8 9 10 | -(void) loadView { UIView* contentView = [[UIView alloc] initWithFrame:...]; self.view = contentView; [contentView release]; tableView = [[UITableView alloc] initWithFrame:...]; // 初始化表格 [self.view addSubView: tableView]; } |
如果这样写,划动的时候就不会触发willBeginEditingRowAtIndexPath,必须这样写: self.view = tableView 才能触发willBeginEditingRowAtIndexPath。