zoukankan      html  css  js  c++  java
  • 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;

        }

    }

     

  • 相关阅读:
    「Python」pandas入门教程
    「Python」字符串操作内置函数
    「Python」10个python项目
    python-基础入门-序
    提取网站图片
    c#图片添加水印
    js获取url传递的参数
    构建之法阅读笔记01
    学习进度条<第一周>
    30道四则运算<1>
  • 原文地址:https://www.cnblogs.com/haiying/p/4083393.html
Copyright © 2011-2022 走看看