IOS实现仿qq好友列表功能
2017-08-26 18:58
411 查看
ios开发之实现仿qq好友列表功能
更改ViewController 里面的设置cell个数的协议函数 可以实现更加cell随按钮的收缩而收缩
//设置每组里面的cell的个数
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//return [[dataDic objectForKey:[_titleArray objectAtIndex:section]] count];
NSString *str = [NSString stringWithFormat:@"%ld",section];
if([selectedArr containsObject:str])
{
return [[dataDic objectForKey:[_titleArray objectAtIndex:section]] count];
}
else{return 0;}
}
// // UserTableViewCell.h // UITableView协议 // // Created by mouweng on 17/8/26. // Copyright © 2017年 mouweng. All rights reserved. // #import <UIKit/UIKit.h> @interface UserTableViewCell : UITableViewCell @property (strong,nonatomic)UIImageView *headerPhoto;//头像 @property (strong,nonatomic)UILabel *nameLabel;//昵称 @property (strong,nonatomic)UILabel *isOnLine;//是否在线 @property (strong,nonatomic)UILabel *introductionLabel;//个性签名,动态 @property (strong,nonatomic)UILabel *networkLabel;//网络状态 @end
// // UserTableViewCell.m // UITableView协议 // // Created by mouweng on 17/8/26. // Copyright © 2017年 mouweng. All rights reserved. // #import "UserTableViewCell.h" @implementation UserTableViewCell - (void)awakeFromNib { [super awakeFromNib]; // Initialization code } //重写初始化方法添加各个属性 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if(self) { _headerPhoto = [[UIImageView alloc] initWithFrame:CGRectMake(10, 5, 50, 50)]; [self.contentView addSubview:_headerPhoto]; _nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(60, 5, 200, 25)]; _nameLabel.backgroundColor = [UIColor clearColor]; _nameLabel.font = [UIFont systemFontOfSize:16]; [self.contentView addSubview:_nameLabel]; _isOnLine = [[UILabel alloc] initWithFrame:CGRectMake(60, 40, 50, 5)]; _isOnLine.font = [UIFont systemFontOfSize:10]; [self.contentView addSubview:_isOnLine]; _introductionLabel = [[UILabel alloc] initWithFrame:CGRectMake(120, 40, 180, 5)]; _introductionLabel.font = [UIFont systemFontOfSize:10]; [self.contentView addSubview:_isOnLine]; _introductionLabel = [[UILabel alloc] initWithFrame:CGRectMake(120, 40, 180, 5)]; _introductionLabel.font = [UIFont systemFontOfSize:10]; [self.contentView addSubview:_introductionLabel]; _networkLabel = [[UILabel alloc] initWithFrame:CGRectMake(320-50, 5, 50, 25)]; _networkLabel.font = [UIFont systemFontOfSize:10]; [self.contentView addSubview:_networkLabel]; } return self; } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } @end
// // ViewController.h // UITableView协议 // // Created by mouweng on 17/8/21. // Copyright © 2017年 mouweng. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController < UITableViewDelegate, UITableViewDataSource > { UITableView *_tableView;//定义数据视图对象 NSMutableArray *selectedArr;//控制列表是否被打开 NSArray *_titleArray;//第一层需要展示的数据 NSDictionary *dataDic;//第二层需要展示的数据 NSArray *friendsArray;//好友列表 NSArray *familyArray;//亲戚列表 NSArray *schoolmateArray;//同学列表 } @end
// // ViewController.m // UITableView协议 // // Created by mouweng on 17/8/21. // Copyright © 2017年 mouweng. All rights reserved. // #import "ViewController.h" #import "UserTableViewCell.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 40, 320, 500) style:UITableViewStylePlain]; _tableView.delegate = self; _tableView.dataSource = self; [self.view addSubview:_tableView]; [self initArrayDate]; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)]; view.backgroundColor = [UIColor whiteColor]; UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 5, 320, 30)]; titleLabel.text = [_titleArray objectAtIndex:section]; [view addSubview:titleLabel]; //添加图片 UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(15 , 15, 10, 10)]; imageView.tag = 20000+section; //根据当前是否展开设置图片 NSString *string = [NSString stringWithFormat:@"%ld",section]; if([selectedArr containsObject:string]) { imageView.image = [UIImage imageNamed:@"arrow_down.jpg"]; } else { imageView.image = [UIImage imageNamed:@"arrow_right.jpg"]; } [view addSubview:imageView]; //添加一个button 用来监听分组,实现分组的展开关闭 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(0, 0, 320, 50); btn.tag = 10000+section; [btn addTarget:self action:@selector(btnOpenList:) forControlEvents:UIControlEventTouchDown]; [view addSubview:btn]; return view; } - (void)btnOpenList:(UIButton *)sender { NSString *string = [NSString stringWithFormat:@"%ld",sender.tag-10000]; //数组selectedArr里面存的数据和表头想对应,方便以后做比较 if ([selectedArr containsObject:string]) { [selectedArr removeObject:string]; } else { [selectedArr addObject:string]; } [_tableView reloadData]; } -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 50; } - (void)initArrayDate { selectedArr = [[NSMutableArray alloc] init]; _titleArray = [[NSArray alloc] initWithObjects:@"好友",@"亲戚",@"同学", nil]; NSDictionary *dic01 = [[NSDictionary alloc]initWithObjectsAndKeys:@"张三丰",@"name",@"17_1.jpg",@"image" ,nil]; NSDictionary *dic02 = [[NSDictionary alloc]initWithObjectsAndKeys:@"邓超",@"name", @"17_2.jpg",@"image" ,nil]; NSDictionary *dic03 = [[NSDictionary alloc]initWithObjectsAndKeys:@"范冰冰",@"name", @"17_3.jpg",@"image" ,nil]; friendsArray = [[NSArray alloc] initWithObjects:dic01,dic02,dic03 ,nil]; NSDictionary *dic11 = [[NSDictionary alloc]initWithObjectsAndKeys:@"爸爸",@"name", @"17_4.jpg",@"image" ,nil]; NSDictionary *dic12 = [[NSDictionary alloc]initWithObjectsAndKeys:@"妈妈",@"name",@"17_5.jpg",@"image" , nil]; NSDictionary *dic13 = [[NSDictionary alloc]initWithObjectsAndKeys:@"姐姐",@"name",@"17_6.jpg",@"image" , nil]; NSDictionary *dic14 = [[NSDictionary alloc]initWithObjectsAndKeys:@"弟弟",@"name",@"17_7.jpg",@"image" , nil]; NSDictionary *dic15 = [[NSDictionary alloc]initWithObjectsAndKeys:@"哥哥",@"name", @"17_8.jpg",@"image" ,nil]; familyArray = [[NSArray alloc] initWithObjects:dic11,dic12,dic13,dic14,dic15, nil]; NSDictionary *dic21 = [[NSDictionary alloc]initWithObjectsAndKeys:@"胖虎",@"name",@"17_9.jpg",@"image" , nil]; NSDictionary *dic22 = [[NSDictionary alloc]initWithObjectsAndKeys:@"大熊",@"name", @"17_10.jpg",@"image" ,nil]; NSDictionary *dic23 = [[NSDictionary alloc]initWithObjectsAndKeys:@"小夫",@"name", @"17_11.jpg",@"image" ,nil]; NSDictionary *dic24 = [[NSDictionary alloc]initWithObjectsAndKeys:@"静香",@"name",@"17_12.jpg",@"image" , nil]; schoolmateArray = [[NSArray alloc] initWithObjects:dic21,dic22,dic23,dic24, nil]; dataDic = [[NSDictionary alloc] initWithObjectsAndKeys:friendsArray,[_titleArray objectAtIndex:0],familyArray,[_titleArray objectAtIndex:1],schoolmateArray,[_titleArray objectAtIndex:2], nil]; } //设置组数 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { return [_titleArray count]; } //设置每组里面的cell的个数 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [[dataDic objectForKey:[_titleArray objectAtIndex:section]] count]; } //给每一个cell定义以及设置内容 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *indexStr = [NSString stringWithFormat:@"%ld",indexPath.section]; NSString *str = [_titleArray objectAtIndex:indexPath.section]; NSArray *arr = [dataDic objectForKey:str]; static NSString *CellIdentifier = @"MainCell"; UserTableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:str]; if(cell == nil) { cell = [[UserTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; //cell 4000 .selectionStyle = UITableViewCellSelectionStyleGray; } if([selectedArr containsObject:indexStr]) { NSDictionary *dic = [arr objectAtIndex:indexPath.row]; cell.headerPhoto.image = [UIImage imageNamed:[dic valueForKey:@"image"]]; cell.nameLabel.text = [dic valueForKey:@"name"]; cell.isOnLine.text = @"[在线]"; cell.introductionLabel.text = @"无动态"; cell.networkLabel.text = @"4G"; } return cell; } - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 60; } //- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section //{ // return @"头部标题"; //} //获取每一组的尾部标题 //- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section //{ // return @"尾部标题"; //} //设置头部和尾部的高度 //- (CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section //{ // return 100; //} // //- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section //{ // return 100; //} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
更改ViewController 里面的设置cell个数的协议函数 可以实现更加cell随按钮的收缩而收缩
//设置每组里面的cell的个数
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//return [[dataDic objectForKey:[_titleArray objectAtIndex:section]] count];
NSString *str = [NSString stringWithFormat:@"%ld",section];
if([selectedArr containsObject:str])
{
return [[dataDic objectForKey:[_titleArray objectAtIndex:section]] count];
}
else{return 0;}
}
相关文章推荐
- 使用UItableview在iOS应用开发中实现好友列表功能
- iOS实现类似QQ的好友列表,自由展开折叠(在原来TableView的基础上添加一个字典,一个Button)
- IOS详解TableView —— QQ好友列表的实现
- iOS-QQ好友列表实现
- iOS开发中QQ好友列表下拉显示全部好友实现思路
- 自定义ExpandableListView 实现像QQ好友列表一样的功能
- 猫猫学IOS(十九)UI之QQ好友列表
- Qt实现QQ好友下拉列表
- QQ好友列表树形列表简单实现方式
- 【IOS功能实现】之:下拉列表
- iOS使用自带的UIViewController实现qq加号下拉菜单的功能(实例代码)
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
- android:listview实现qq,微信好友列表(头像,昵称,个性签名)
- JS仿QQ好友列表展开、收缩功能(第一篇)
- 用ExpandableListView实现类似QQ好友列表
- Android自定义ListView实现仿QQ可拖拽列表功能
- QQ - iPhone 风格的好友列表实现
- qq好友列表窗口 java实现
- ios-day09-02(QQ好友列表。自定义UITableViewHeaderFooterView、如何控制UITableView每一组的展开和闭合、代理的使用)
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(二)