tableView的编辑

tableView的编辑

import “MainViewController.h”

@interface MainViewController ()

pragma mark 重写系统的编辑按钮点击触发的方法

-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:YES];
}

pragma mark 设置哪些行可以进行编辑

-(BOOL)tableView:(UITableView )tableView canEditRowAtIndexPath:(NSIndexPath )indexPath{
// 奇数行可以编辑,偶数行不能编辑
// if (indexPath.row%2==0) {
// return NO;
// }else{
// return YES;
// }
// 默认是YES
return YES;
}

// 有两个样式,一个是插入,一个是删除
-(UITableViewCellEditingStyle)tableView:(UITableView )tableView editingStyleForRowAtIndexPath:(NSIndexPath )indexPath{
return UITableViewCellEditingStyleDelete;
}

// 删除数据,提供了一个左划的效果
-(void)tableView:(UITableView )tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath )indexPath{
if (editingStyle==UITableViewCellEditingStyleDelete) {
// 先删除数据源
[self.arr removeObjectAtIndex:indexPath.row];
// [self.tableView reloadData];

    // 通过tableView来删除上面的cell
    // 第一个参数:指定删除哪一个分区的哪个行,把他作为一个元素放在数组中
    // 第二个参数:删除动画
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}

}

// 修改删除按钮的标题
-(NSString )tableView:(UITableView )tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @”点一下,速度”;
}

import “MainViewController.h”

@interface MainViewController ()

pragma mark 重写系统的编辑按钮点击触发的方法

-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:YES];
}

pragma mark 设置哪些行可以进行编辑

-(BOOL)tableView:(UITableView )tableView canEditRowAtIndexPath:(NSIndexPath )indexPath{
// 奇数行可以编辑,偶数行不能编辑
// if (indexPath.row%2==0) {
// return NO;
// }else{
// return YES;
// }
// 默认是YES
return YES;
}

// 有两个样式,一个是插入,一个是删除
-(UITableViewCellEditingStyle)tableView:(UITableView )tableView editingStyleForRowAtIndexPath:(NSIndexPath )indexPath{
return UITableViewCellEditingStyleDelete;
}

// 删除数据,提供了一个左划的效果
-(void)tableView:(UITableView )tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath )indexPath{
if (editingStyle==UITableViewCellEditingStyleDelete) {
// 先删除数据源
[self.arr removeObjectAtIndex:indexPath.row];
// [self.tableView reloadData];

    // 通过tableView来删除上面的cell
    // 第一个参数:指定删除哪一个分区的哪个行,把他作为一个元素放在数组中
    // 第二个参数:删除动画
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}

}

// 修改删除按钮的标题
-(NSString )tableView:(UITableView )tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @”点一下,速度”;
}

pragma mark 这个方法是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 yellowColor];

UITableViewRowAction *topAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
    NSLog(@"触发了置顶按钮");
}];
return @[deleteAction,topAction];

}

// 移动
-(void)tableView:(UITableView )tableView moveRowAtIndexPath:(NSIndexPath )sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
// 1.先获取到起始位置的数据
// 进行一下retain一下,否则可能引用计数为0,被释放掉
NSString *str=[self.arr[sourceIndexPath.row] retain];
// 2.把起始位置的对象从数据源中移除
[self.arr removeObjectAtIndex:sourceIndexPath.row];
// 3.把数据插入到数组的目的位置上去
[self.arr insertObject:str atIndex:destinationIndexPath.row];
// 4.释放
[str release];
}

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.arr.count;
    }

  • (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *reuse=@”reuse”;
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:reuse];
    if (!cell) {
    cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuse];
    }
    cell.textLabel.text=self.arr[indexPath.row];
    return cell;
    }

你可能感兴趣的:(iOS-UI,tableView的,uitableview)