点击HeadView 实现对cell动态下拉一个TableView,实现对SectionHeader悬停进行设置
来源:互联网 发布:js页面加载完成后跳转 编辑:程序博客网 时间:2024/05/20 13:14
想要在TableView中实现动态添加某一个Cell被点击后,展开显示其他的UIView,简单的方式是可以在点击某个cell时,修改另外一个cell(重画另一个UIView的cell,默认高度未0,这样就显示不出来)修改高度,并且重载一下TableView,简单代码如下:
-(void)headViewClick:(UIButton*)sender { NSIndexPath *tagPath = [NSIndexPath indexPathForItem:0 inSection:sender.tag]; NSNumber *object = [NSNumber numberWithInt:sender.tag]; BOOL onShow=NO; if (![sectionHeaderHover containsObject:object]) { // 需要展开的添加到数组中 [sectionHeaderHover addObject:object]; onShow = YES; } else { //已经在数组中得,说明已经展开,再次点击将它移除 [sectionHeaderHover removeObject:object]; } // 注意这个一定要在调用 cellForRowAtIndexPath 前,否则cell画出会错乱,因为这个调用后,马上回对tagPath的Cell重画 //而在cellForRowAtIndexPath后调用,addsubview 会被更新掉 [self.contentTableView reloadRowsAtIndexPaths:@[tagPath] withRowAnimation:UITableViewRowAnimationAutomatic]; if (onShow) { if (sectionHeaderHover == nil) { sectionHeaderHover = [[NSMutableArray alloc]init]; } // 获取 tag 对应的cell view,这里可以对view重新设置 在伸展后的view UITableViewCell *cell = (id)[self.contentTableView cellForRowAtIndexPath:tagPath]; TagView *view = [[TagView alloc]initWithFrame:CGRectMake(0, 0, 320, 150)]; [view setData:sectionArray[sender.tag]]; [cell addSubview:view]; } }
修改cell 高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (self.contentTableView == tableView) { NSNumber *object = [NSNumber numberWithInt:indexPath.section]; if (indexPath.row == 0 ) { if ([sectionHeaderHover containsObject:object]) { return 150; } else { return 0; } } } return -1;}
UITableView 系统默认Head会悬停,在不需要这个特效时,可以采用scroll滑动的位置来进行确认是否偏移
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {// if (scrollView == self.myTableView) { //YOUR_HEIGHT 为最高的那个headerView的高度// CGFloat sectionHeaderHeight = 20; if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); } }}
测试例子:http://download.csdn.net/detail/huang3838438/7785763
0 0
- 点击HeadView 实现对cell动态下拉一个TableView,实现对SectionHeader悬停进行设置
- 使用sdWebImage实现对tableView的cell加载图片淡入淡出效果
- iOS开发使用sdWebImage实现对tableView的cell加载图片淡入动画
- iOS中tableview通过点击实现Cell的伸缩
- 对tableview进行操作
- 设置tableView的sectionheader的高度
- TableView的点击出现和关闭下拉菜单的实现
- tableview实现下拉刷新
- TableView中实现自定义cell
- 如何实现动态cell区的设置
- 用动态代理实现用AOP对数据库进行操作
- 在salesforce中实现鼠标悬停显示提示框效果,并对显示框内容进行微缩页面布局
- 下拉tableView,Headview图片左右扩展
- swfit的tableview下拉刷新,点击cell异常,弹窗UIAlertController
- 对一个数组进行螺旋式打印,java语言实现
- 【matlab】:matlab实现对一个图片进行平移
- android 实现一个ContentProvider对多张表进行操作
- 分治算法实现对一个数进行字典全排序
- 各位acmer 学累的时候不妨来看看
- cocos2d-html5 和 cocos2d-jsb的区别
- Android LayoutInflater原理分析,带你一步步深入了解View
- kallsyms的分析
- 华东理工某ACMer总结
- 点击HeadView 实现对cell动态下拉一个TableView,实现对SectionHeader悬停进行设置
- CSVReader 处理CSV文件(.NET)
- ReportStudio入门教程(八十二) - 计算项的运算顺序(续一):交叉表比率
- Sql Server还原数据库失败,错误:3514(注意解决错误码是3514的)
- Android:Android开源框架:AndroidAnnotations
- hdu4970 Killing Monsters
- android:跳转,Intent,有无返回值
- 思想改变态度,习惯改变命运!2014.8.19
- 神奇的位运算(不会不行啊。。。被坑了好多题了。。。。)