ios开发中对UITableView的操作(包括删除,插入,移动位置)

来源:互联网 发布:web进销存php源码 编辑:程序博客网 时间:2024/06/07 11:20


    UITableView是iOS开发中用的比较多的一些类,下面介绍一下对UITableView的代码变成操作。


要想对UITableView进行编辑操作,首先应设置UITableView为可编辑状态,示例代码如下:

self.pTableView.editing=!self.pTableView.isEditing ;

或者 

[self.pTableViewsetEditing:!self.pTableView.isEditing];

然后是采用UITableViewDelegate协议下的(切记委托Delegate对象是当前UITableView所属于的对象)

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

方法进行设置能够被编辑的行,通过indexpath变量进行设置,返回YES是可编辑的,否则是不可编辑的。例如:

if ([indexPathrow]==0) {//设置第0行不可被编辑

       returnNO;

    }

    elsereturnYES;

然后是再进行编辑方式的设置(包括删除,插入,不改变),方法是

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

通过不同indexpath下的UITableViewCellEditingStyle的返回值,来设置编辑方式。如下:

if ([indexPathrow]%3==0) {

        returnUITableViewCellEditingStyleDelete;

    }

   elseif([indexPathrow]%3==1)

        returnUITableViewCellEditingStyleNone;

    elsereturnUITableViewCellEditingStyleInsert;

然后是在方法

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath进行在编辑状态下对UITableView的操作:

    if (editingStyle==UITableViewCellEditingStyleDelete) {

        [self.pArrremoveObjectAtIndex:[indexPathrow]];//删除存储UITableViewCell的textLabel的text内容的数组对应的内容

        [self.pTableViewbeginUpdates];//开始更新

        [self.pTableViewdeleteRowsAtIndexPaths:[NSArrayarrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationRight];//进行删除状态下操作,动画是向右移动删除

        [self.pTableViewendUpdates];

    }

    elseif(editingStyle==UITableViewCellEditingStyleInsert)

    {

        [self.pArrinsertObject:@"newCell"atIndex:[indexPathrow]];

        [self.pTableViewbeginUpdates];

        [self.pTableViewinsertRowsAtIndexPaths:[NSArrayarrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationTop];//进行插入状态下的操作,然后是动画是从上向下插入

        [self.pTableViewendUpdates];

    }

至此结束对UITableView的编辑操作。

    最后是进行移动操作,移动操作和编辑操作相似,首先是需要设置可以移动的行,采用的方法是

-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath通过不同indexpath情况下的返回值来设置。示例代码如下:

    if ([indexPathrow]>10) {

       returnNO;

    }

    elsereturn YES;

然后是通过方法

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath进行移动操作,示例代码如下:

[self.pArrinsertObject:[self.pArrobjectAtIndex:[sourceIndexPathrow]] atIndex:[destinationIndexPathrow]];

    [self.pArrremoveObjectAtIndex:[sourceIndexPathrow]];

//因为移动只改变了行的相对位置,没有改变UITableView行的内容,所以只需要改变当前存储页面中的文本的数组的内容,来改变页面的重绘制形式就可以了。










0 0
原创粉丝点击