tableView的编辑
@interface MainViewController ()
-(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{
// 奇数行可以编辑,偶数行不能编辑
// 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 @”点一下,速度”;
}
@interface MainViewController ()
-(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{
// 奇数行可以编辑,偶数行不能编辑
// 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 @”点一下,速度”;
}
-(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;
}