博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS学习之UITableView中Cell的操作
阅读量:6566 次
发布时间:2019-06-24

本文共 4219 字,大约阅读时间需要 14 分钟。

hot3.png

接着 这篇,这里主要讲UITableView 中的Cell的操作,包括标记、移动、删除、插入。

为了简单快捷,直接从原来那篇的代码开始,代码下载地址:

要进行数据的操作了,把代码里的不可变数组改成可变的:

NSArray *list -》NSMutableArray *list 

1、标记Cell。

效果如下:

打开项目,

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath。

添加代码

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{//    NSString *rowString = [self.list objectAtIndex:[indexPath row]];//    UIAlertView * alter = [[UIAlertView alloc] initWithTitle:@"选中的行信息" message:rowString delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];//    [alter show];    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];    if (cell.accessoryType == UITableViewCellAccessoryNone) {        cell.accessoryType = UITableViewCellAccessoryCheckmark;    }else {        cell.accessoryType = UITableViewCellAccessoryNone;    }    [tableView deselectRowAtIndexPath:indexPath animated:YES];}
标记分别有四种效果:

UITableViewCellAccessoryCheckmark

UITableViewCellAccessoryDetailDisclosureButton
UITableViewCellAccessoryDisclosureIndicator
UITableViewCellAccessoryNone

可以自己试试。

2、删除Cell

想要实现移动或者删除行这样的操作,需要启动表格的编辑模式。使用的是setEditing:animated:方法。

打开xib,生成Table的IBoutlet映射  tableView;

在viewDidload里添加

    [self.tableViewsetEditing:YES];

这是启动运行程序,

打开可编辑模式,默认情况显示删除的图标的。

实现删除的代码:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {    NSUInteger row = [indexPath row];    if (editingStyle == UITableViewCellEditingStyleDelete) {        [self.list removeObjectAtIndex:row];         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]                         withRowAnimation:UITableViewRowAnimationAutomatic];     }}

这个方法根据参数editingStyle是UITableViewCellEditingStyleDelete

在这删除行的方法又出现了一个常量:UITableViewRowAnimationAutomatic,它表示删除时的效果,类似的常量还有:

UITableViewRowAnimationAutomatic
UITableViewRowAnimationTop
UITableViewRowAnimationBottom
UITableViewRowAnimationLeft
UITableViewRowAnimationRight
UITableViewRowAnimationMiddle
UITableViewRowAnimationFade
UITableViewRowAnimationNone

从常量名称打开可以看出效果来。

这是运行,就可以删除其中的一个Cell行了。

3、移动Cell

添加代码如下:

3.1先把默认的删除的图标去掉

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {     return UITableViewCellEditingStyleInsert; }

3.2返回当前Cell是否可以移动

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {     return YES; }
3.3执行移动操作

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {    NSUInteger fromRow = [sourceIndexPath row];     NSUInteger toRow = [destinationIndexPath row];         id object = [self.list objectAtIndex:fromRow];     [self.list removeObjectAtIndex:fromRow];     [self.list insertObject:object atIndex:toRow]; }
运行程序:

怎么移动呢?不要以为按住行的任何地方都能移动,要按住最左边的三道杠的图标才能拖动移动

4、插入cell:

4.1插入和删除差不多,在

- (void)tableView:(UITableView *)tableView commitEditingStyle:

(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

添加UITableViewCellEditingStyleInsert判断

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {    NSUInteger row = [indexPath row];    if (editingStyle == UITableViewCellEditingStyleDelete) {        [self.list removeObjectAtIndex:row];         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]                         withRowAnimation:UITableViewRowAnimationAutomatic];     }else if(editingStyle == UITableViewCellEditingStyleInsert ){        NSArray *insertIndexPaths = [NSArray arrayWithObjects:indexPath,nil];        [self.list insertObject:@"inset new Cell" atIndex:row];        [tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationMiddle];    }}
4.2 修改图标为插入样式。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {     return UITableViewCellEditingStyleInsert; }
运行,点加号图标,

完成!

例子代码:

著作权声明:本文由原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

转载于:https://my.oschina.net/201003674/blog/288749

你可能感兴趣的文章
深度学习在美团配送ETA预估中的探索与实践
查看>>
【跃迁之路】【732天】程序员高效学习方法论探索系列(实验阶段489-2019.2.22)...
查看>>
微服务测试之静态代码扫描
查看>>
PAT A1063
查看>>
IOS开发错误library not found for -lXXX
查看>>
Win7安装Docker
查看>>
Web 开发学习笔记(6) --- 前端开发之 HTML5
查看>>
Ionic生命周期
查看>>
linux mpstat命令
查看>>
删除数据库中与同步数据冗余的数据(多对多)
查看>>
技本功丨呀~我不会写CSS之vertical-align(上集)
查看>>
区块链拓展-信任颠覆
查看>>
解读:spring-boot logging。记一次Logback在spring-boot中的使用方法
查看>>
【C】 36_函数与指针分析
查看>>
HTTP2 基础知识点总结
查看>>
LinkedList源码(基础代码)
查看>>
聊聊flink的StateTtlConfig
查看>>
黑盒测试 白盒测试 题
查看>>
VUE-CLI webpack配置autoprefixer后build模式与dev不相同,打包后部分前缀或属性丢失,所见即所得...
查看>>
【干货】JDK动态代理的实现原理以及如何手写一个JDK动态代理
查看>>