UITableView移动cell位置(附在不同section之间切换的拓展)

UITableView在iOS开发中用处很广,当然其用法也是有些复杂的,特别是在设计UITableViewCell的时候,使用和处理cell是一个不小的挑战,对于cell位置的移动我们可以使用- (void)tableView:(UITableView )tableView moveRowAtIndexPath:(NSIndexPath )sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath方法来做到,移动cell的方式无非就是在同一个section之间的移动和在不同的section之间移动,但是cell的位置改变是一个难点,我做了一个小demo,总结了一些经验,解决了这两个问题。
1、同一个section之间cell位置的移动
点击section2的一个cell之后,这个cell移动到这个section的顶部位置,而原来的第一条cell则按顺序移动到第二位,代码如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //取消cell被点击时出现的背景阴影
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    //sourceIndexPath是被点击cell的IndexPath
    NSIndexPath *sourceIndexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:1];
    //destinationIndexPath是section2顶部第一条cell的位置
    NSIndexPath *destinationIndexPath = [NSIndexPath indexPathForRow:0 inSection:1];
    //获取被点击cell对应的数据
    NSString *str1 = [dataListSecond objectAtIndex:indexPath.row];
    //对数据源进行操作,修改数据源
    [dataListSecond removeObject:str1];
    [dataListSecond insertObject:str1 atIndex:0];
    //移动cell的位置
    [myTable moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];
    }

效果如图:
点击cell之前
点击cell之后,数字7所在的cell被移动到了section2的顶部位置
2、在不同section之间移动cell
跨section移动cell,section1中的cell始终只有一条,点击section2中的任意一条cell,移动这条cell至section1,而section1中原来的cell被移动到section2中顶部cell的位置,代码如下

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    //sourceIndexPath是section2中被点击cell的IndexPath
    NSIndexPath *sourceIndexPath = [NSIndexPath indexPathForRow:indexPath.row
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值