iOS开发之tableView cell的展开收回功能实现代码

 更新时间:2018年01月26日 16:51:36   作者:勤劳的小QQ  
本文介绍了iOS开发之tableView cell的展开收回功能实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、实现方法

例如好友分组,分为好友和陌生人两组,实现点击好友和陌生人展开或收回该分组对应的cell的功能。

实现:可以分组对应tableView的section,点击section展开和收回cell。

创建一个临时数组selectedArr存储需要展开的section。点击section是判断selectedArr是否包含该组,如果包含则移除,不包含则添加到selectedArr。

展示selectedArr包含组的cell。

二、代码实现

#import "ZCellGroupController.h"

@interface ZCellGroupController ()<UITableViewDelegate, UITableViewDataSource>

@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSArray *titleArray;//分组
@property (nonatomic, strong) NSArray *friendsArray;//每组对应内容
@property (nonatomic, strong) NSMutableArray *selectedArr;//存储需要展开的cell组

@end

@implementation ZCellGroupController


-(void)viewDidLoad {
  [super viewDidLoad];
  self.selectedArr = [[NSMutableArray alloc]init];
  [self addTableView];
  [self addData];
}
- (void)addTableView{
  UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, kSCREENWIDTH, kScreenHeight) style:UITableViewStyleGrouped];
  self.tableView = tableView;
  tableView.delegate = self;
  tableView.dataSource = self;
  tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
  [self.view addSubview:_tableView];
}
- (void)addData{
  self.titleArray = [NSArray arrayWithObjects:@"好友",@"陌生人", nil];
  self.friendsArray = [NSArray arrayWithObjects:
                       @[@"A",@"B",@"C",@"D",@"E",@"F"],
                       @[@"陌生1",@"陌生2",@"陌生3",@"陌生4",@"陌生5",@"陌生6",@"陌生7",@"陌生8",@"陌生9",@"陌生10",@"陌生11",@"陌生12",@"陌生13",@"陌生14"],nil];
}

#pragma mark --tableViewDelegate

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
  return self.titleArray.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  NSString *sectionStr = [NSString stringWithFormat:@"%ld",(long)section];
  NSInteger num ;
  //如果selectedArr不包含section,该分组返回number为0;
  if ([self.selectedArr containsObject:sectionStr]) {
    NSArray *arrayData = self.friendsArray[section];
    
    num = arrayData.count ;
  }else{
    num = 0;
  }
  return num;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
  return 40;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
  UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kSCREENWIDTH, 40)];
  view.backgroundColor = [UIColor whiteColor];
  UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 5,kSCREENWIDTH-20 , 30)];
  titleLabel.text = self.titleArray[section];
  [view addSubview:titleLabel];
  
  //添加点击事件
  UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, kSCREENWIDTH, 40)];
  btn.tag = 100+section;
  [btn addTarget:self action:@selector(viewBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  [view addSubview:btn];
  return view;
}
- (void)viewBtnClick:(UIButton *)btn{
  NSString *string = [NSString stringWithFormat:@"%ld",btn.tag - 100];
  if ([self.selectedArr containsObject:string]) {
    [self.selectedArr removeObject:string];
  }else{
    [self.selectedArr addObject:string];
  }
  NSLog(@"selectedArr:%@",self.selectedArr);

  [_tableView reloadData];
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
  return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  
  NSString *sectionStr = [NSString stringWithFormat:@"%ld",(long)indexPath.section];
  static NSString *cellID = @"testCellID";
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
  if (!cell) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    cell.selectionStyle = UITableViewCellSelectionStyleGray;

  }
  
  NSArray *arrayData = self.friendsArray[indexPath.section];
  
  if ([self.selectedArr containsObject:sectionStr]) {
    cell.textLabel.text = arrayData[indexPath.row];
  }
  return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
  return 45;
}
@end

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS关键字static extern const使用示例详解

    iOS关键字static extern const使用示例详解

    这篇文章主要为大家介绍了iOS关键字static extern const使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 详解iOS中position:fixed吸底时的滑动出现抖动的解决方案

    详解iOS中position:fixed吸底时的滑动出现抖动的解决方案

    这篇文章主要介绍了详解iOS中position:fixed吸底时的滑动出现抖动的解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 设计模式中的Memento备忘录模式的在iOS App开发中的运用

    设计模式中的Memento备忘录模式的在iOS App开发中的运用

    这篇文章主要介绍了设计模式中的Memento备忘录模式的在iOS App开发中的运用,Memento着重于捕获和具体化当前对象的内部状态,需要的朋友可以参考下
    2016-03-03
  • iOS应用中UICollectionViewCell定制Button

    iOS应用中UICollectionViewCell定制Button

    这篇文章主要介绍了iOS应用中UICollectionViewCell如何定制Button,设置每行显示的按钮的个数,自定制按钮的显示样式,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 去除IOS苹果手机自带按钮样式的方法(推荐)

    去除IOS苹果手机自带按钮样式的方法(推荐)

    下面小编就为大家分享一篇去除IOS苹果手机自带按钮样式的方法(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • iOS开发中指纹识别简单介绍

    iOS开发中指纹识别简单介绍

    指纹识别是在iOS8.0以后才推出的,所以我们如果想把指纹集成到我们的APP当中,我们首先就要在代码中判断iOS版本。接下来通过本文给大家分享iOS开发中指纹识别简单介绍,需要的朋友参考下吧
    2017-11-11
  • ios学习笔记之基础数据类型的转换

    ios学习笔记之基础数据类型的转换

    在编码过程中,数据的处理是必要的。众多数据中,NSString、NSData、NSArray、 NSDictionary等数据类型是常用的,对付它们容易,但是在多个数据类型之间转换就需要技巧了。本文主要给大家介绍ios中基础数据类型的转换,有需要的下面来一起看看吧。
    2016-11-11
  • IOS开发中使用writeToFile时的注意事项

    IOS开发中使用writeToFile时的注意事项

    本篇文章主要介绍了开发中使用writeToFile时的注意事项,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • iOS中PNChart与UITableView的联动示例详解

    iOS中PNChart与UITableView的联动示例详解

    PNChart是个界面很漂亮的图表第三方库,UITableView则不用过多介绍了,各位iOS开发者们都知道,下面这篇文章主要给大家介绍了关于iOS中PNChart与UITableView的联动的相关资料,需要的朋友可以参考下
    2018-07-07
  • iOS开发UICollectionView实现拖拽效果

    iOS开发UICollectionView实现拖拽效果

    这篇文章主要为大家详细介绍了iOS开发UICollectionView实现拖拽效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论