TableViewController的添加,删除,移动

#import "RootTableViewController.h"

 

@interface RootTableViewController ()

{

    UITableViewCellEditingStyle _style;

}

@property(nonatomic,strong)NSMutableArray *array;

@end

 

@implementation RootTableViewController

 

- (id)initWithStyle:(UITableViewStyle)style

{

    self = [super initWithStyle:style];

    if (self) {

        // Custom initialization

        self.array=[NSMutableArray array];

        

           }

    return self;

}

 

- (void)viewDidLoad

{

    [super viewDidLoad];

    

    //在数组里存一些数据

    for (int i=0; i<3; i++) {

        NSMutableArray *tempArray=[NSMutableArray array];

        for (int j=0; j<5; j++) {

            [tempArray addObject:[NSString stringWithFormat:@"%d,%d个人",i,j]];

        }

        [self.array addObject:tempArray];

    }

   // 设置代理

    self.tableView.dataSource=self;

    self.tableView.delegate=self;

 

    //在导航栏两侧添加两个barbutton

    UIBarButtonItem *bar=[[UIBarButtonItem alloc] initWithTitle:@"编辑" style:(UIBarButtonItemStyleDone) target:self action:@selector(barAction:)];

    self.navigationItem.leftBarButtonItem=bar;

    

    UIBarButtonItem *bar1=[[UIBarButtonItem alloc] initWithTitle:@"添加" style:(UIBarButtonItemStyleDone) target:self action:@selector(barAction1:)];

    self.navigationItem.rightBarButtonItem=bar1;

 

    

    

}

//barbutton编辑事件

-(void)barAction:(UIBarButtonItem *)sender

{

    _style=UITableViewCellEditingStyleDelete;

    BOOL flag=self.tableView.editing;

    [self.tableView setEditing:!flag animated:YES];

}

//barbutton添加事件

-(void)barAction1:(UIBarButtonItem *)sender

{

    _style=UITableViewCellEditingStyleInsert;

    BOOL flag=self.tableView.editing;

    [self.tableView setEditing:!flag animated:YES];

}

//设置哪些行能编辑(默认全部都能)

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

{

    return  YES;

}

//确定编辑状态(删除|添加)

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return _style;

}

//提交编辑

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

    if(editingStyle==UITableViewCellEditingStyleDelete)

    {

        //删除

        [self.array[indexPath.section]removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationLeft)];

    }

    else

    {

        //添加

        NSString *s=@"测试数据";

        [self.array[indexPath.section]insertObject:s atIndex:indexPath.row+1];

        NSIndexPath *index=[NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section];

        [tableView insertRowsAtIndexPaths:@[index] withRowAnimation:(UITableViewRowAnimationRight)];

        

    }

    

}

//哪些行能移动

-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

{

    return YES;

}

 

//完成移动

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

{

    //先赋值

    id obj=self.array[sourceIndexPath.section][sourceIndexPath.row];

    //再删除

    [self.array[sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];

    //最后添加

    [self.array[destinationIndexPath.section]insertObject:obj atIndex:destinationIndexPath.section];

}

//检查越界

-(NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath

{

    

    if(sourceIndexPath.section!=proposedDestinationIndexPath.section)

    {

        return sourceIndexPath;

    }

    else

    {

        return proposedDestinationIndexPath;

    }

}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。