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

 

    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行不可被编辑

       return NO;

    }

    elsereturn YES;

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

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

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

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

        returnUITableViewCellEditingStyleDelete;

    }

   else if([indexPathrow]%3==1)

        returnUITableViewCellEditingStyleNone;

    elsereturn UITableViewCellEditingStyleInsert;

然后是在方法

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

    if (editingStyle==UITableViewCellEditingStyleDelete) {

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

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

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

        [self.pTableViewendUpdates];

    }

    elseif(editingStyle==UITableViewCellEditingStyleInsert)

    {

        [self.pArrinsertObject:@"newCell"atIndex:[indexPath row]];

        [self.pTableViewbeginUpdates];

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

        [self.pTableViewendUpdates];

    }

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

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

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

    if ([indexPathrow]>10) {

       return NO;

    }

    elsereturn  YES;

然后是通过方法

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

[self.pArrinsertObject:[self.pArrobjectAtIndex:[sourceIndexPath row]] atIndex:[destinationIndexPath row]];

    [self.pArrremoveObjectAtIndex:[sourceIndexPath row]];

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










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值