当前位置: 首页 > news >正文

折叠cell的学习

折叠cell

文章目录

  • 折叠cell
    • 前言
    • 示例
    • 代码部分
      • 实现思路
      • 核心内容

前言

笔者在暑假的3GShare的项目中就写了有关折叠cell的内容,这里笔者重新讲一下相关内容。

示例

在这里插入图片描述

这里先给出效果图,这里是我们的折叠cell的最后的实现效果,下面来讲解一下相关代码。

代码部分

实现思路

这里解释一下每一个步骤,这里我们实现折叠cell的核心内容就是通过仅仅展示第一行cell的内容,这里的frame我们设置起初设置成一行的cell的大小,然后我们通过设置- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath这个协议函数来修改我们的frame让点击后可以展现所有的cell。

核心内容

我们在这里要实现的重要部分在于我们的- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath这个协议函数内部的内容

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {NSString* str = _array[indexPath.section];//找到对应的cell[_array removeObjectAtIndex:indexPath.section];//移除元素[_array insertObject:str atIndex:0];//插入元素到第一个位置[self.tableView reloadData];//重新加载数据[self press:self.btn];
}
-(void)press:(UIButton*)btn {if (btn.selected) {self.tableView.frame = CGRectMake(200, 300, 100, 30);} else {self.tableView.frame = CGRectMake(200, 300, 100, 150);}btn.selected = !btn.selected;
}

下面给出我们这部分的原理:我们因为只展现第一个cell,所以我们只用把元素移到第一个位置,然后重新加载一下tableView,然后根据按钮的当前状况来调整frame就可以了。
下面是完整代码:

- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = UIColor.whiteColor;self.array = [NSMutableArray arrayWithArray:@[@"cell01",@"cell02",@"cell03",@"cell04",@"cell05"]];self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(200, 300, 100, 30) style:UITableViewStylePlain];self.tableView.delegate = self;self.tableView.dataSource = self;[self.view addSubview:self.tableView];self.btn = [UIButton buttonWithType:UIButtonTypeCustom];self.btn.frame = CGRectMake(280, 300, 20, 20);[self.btn setImage:[UIImage imageNamed:@"youjiantou.png"] forState:UIControlStateNormal];[self.btn setImage:[UIImage imageNamed:@"xiajiantou.png"] forState:UIControlStateSelected];[self.btn addTarget:self action:@selector(press:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:self.btn];// Do any additional setup after loading the view.
}
#pragma mark tableview
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {return 1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {return 30;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {//NSLog(@"%ld", self.array.count);return 5;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {UITableViewCell* cell01 = [tableView dequeueReusableCellWithIdentifier:@"mycell"];if (cell01 == nil) {cell01 = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"mycell"];}cell01.textLabel.text = _array[indexPath.section];return cell01;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {NSString* str = _array[indexPath.section];[_array removeObjectAtIndex:indexPath.section];[_array insertObject:str atIndex:0];[self.tableView reloadData];[self press:self.btn];
}
-(void)press:(UIButton*)btn {if (btn.selected) {self.tableView.frame = CGRectMake(200, 300, 100, 30);} else {self.tableView.frame = CGRectMake(200, 300, 100, 150);}btn.selected = !btn.selected;
}

折叠cell的demo


http://www.mrgr.cn/news/16963.html

相关文章:

  • 【Python百日进阶-Web开发-Peewee】Day298 - 骇客 Hacks
  • 计算机毕业设计选题推荐-公司考勤管理系统-Java/Python项目实战
  • python 地理抠图
  • 爬虫常用模板
  • 足浴城消费系统小程序的设计
  • Python知识点:如何使用Coverage进行代码覆盖率分析
  • 中国文化艺术孙溟展浅析《绛帖》
  • 音视频开发之旅(90)-Vision Transformer论文解读与源码分析
  • 文心快码前端工程师观点分享:人机协同新模式的探索之路(一)
  • 设计模式之中介者模式
  • 常用排序算法(上)
  • 0901python打印异常信息
  • iOS面试:在block内如何修改block外部变量?
  • 火绒安全与国际对手:全面对比与分析
  • PCL 基于八叉树的曲率下采样
  • asio之带缓冲区的流
  • OpenIPC开源IPC之重要源码包
  • 常使用的前端构建优化策略
  • 2024年Linux内核社区关于large folio的关键进展
  • PCL-直通滤波