博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITableView:可展开的 UITableView
阅读量:6340 次
发布时间:2019-06-22

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

针对 TableView,有些时候需要在点击 cell 时,展开这行 cell,显现出更多的选项或者全部内容等。

比较容易想到的处理方案就是利用 section,在未选择之前,每一行都是一个 section,待展开的内容都在这个 section 的 row 里面。在点击事件里,reload 当前选中的 section,在 numberOfRows 方法中,返回大于 0 的数量。

这里谈谈另外一种很简单的方法,直接在 TableViewCell 上面做文章。

1.点击 cell 时,在 didSelectRowAtIndexPath 方法中加两个方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    [tableView beginUpdates];//    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];//    cell.textLabel.text = [NSString stringWithFormat:@"Did Select %@", indexPath];    [tableView endUpdates];}

 2.如果需要变化这行 row 的高度,在 heightForRow 方法中,加入如下处理

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    if ([indexPath isEqual:[tableView indexPathForSelectedRow]]) {        return 88;    }    return 44;}

 3.在 TableViewCell 的 setSelected:(BOOL)selected animated:(BOOL)animated 方法中,为选中和未选中分别做下处理即可。

#重要

beginUpdates 和 endUpdates 两个方法之间虽然什么也没有写,但是,这与 reloadData 是不同的,前者可以保持住 cell 的 selected 属性,而后者则把 selected 属性重置了。

转载地址:http://xihoa.baihongyu.com/

你可能感兴趣的文章
原生javascript学习:用循环改变div颜色
查看>>
ABBYY FineReader 12内置的自动化任务
查看>>
ab 测试 和 apache 修改 并发数 mpm
查看>>
Nginx 的软件负载均衡详解
查看>>
TIMED OUT WAITING FOR OHASD MONITOR
查看>>
过滤器
查看>>
Html与CSS快速入门02-HTML基础应用
查看>>
Tr A
查看>>
poj 3185 The Water Bowls
查看>>
常用HTTP状态码备忘
查看>>
资源合集
查看>>
MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
查看>>
解决phpredis 'RedisException' with message 'read error on connection'
查看>>
php设计模式(二):结构模式
查看>>
《图解TCP_IP_第5版》读书笔记
查看>>
RMAN Complete Recovery
查看>>
[ CodeForces 1064 B ] Equations of Mathematical Magic
查看>>
NYOJ-15:括号匹配(二)
查看>>
首次记录在案的
查看>>
成长路上如何快速升级?你需要强大的自我驱动力
查看>>