您的位置:首页 > 其它

tableView的编辑

2015-08-11 20:37 369 查看
// 创建tableView控件

// 在tableView中添加barButton

self.navigationItem.rightBarButtonItem = self.editButtonItem;


// 重写系统的编辑按钮点击方法

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
// 重写方法前要继承
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:YES];
}


// 设置哪些行可以进行编辑

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {

}


// 设置编辑按钮样式

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}


// 删除数据

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// 删除数据源
[self.array removeObjectAtIndex:indexPath.row];
//        [self.tableView reloadData];

// 通过tableView删除上面的cell
// 第一个参数:指定删除哪个分区的行
// 第二个参数:删除的动画效果
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}
}


// 修改删除按钮标题

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
return @"我看你敢删";
}


// 这个方法是iOS8.0之后出现的方法,可以再编辑状态下出现多个按钮

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
// 按钮的点击所触发的事件,都是写在block中的
NSLog(@"测试删除");
}];
deleteAction.backgroundColor = [UIColor lightGrayColor];

UITableViewRowAction *upAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog(@"测试置顶");
}];
upAction.backgroundColor = [UIColor cyanColor];
return @[deleteAction, upAction];
}


// 移动

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
// 1.先获取到起始位置的数据
NSString *str = [self.array[sourceIndexPath.row] retain];
// 2.把起始位置的对象从数据源移除
[self.array removeObjectAtIndex:sourceIndexPath.row];
// 3.把数据插入到数组中
[self.array insertObject:str atIndex:destinationIndexPath.row];

[str release];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: