#import "ContactListTableViewController.h"

#import "Contact.h"

#import "ContactCell.h"

#import "GirlCell.h"

@interface ContactListTableViewController ()

@property (nonatomic,retain)NSMutableArray *allKeys;

@property (nonatomic,retain)NSMutableDictionary *groupDic;

@end

@implementation ContactListTableViewController

- (void)dealloc

{

self.allKeys = nil;

self.groupDic = nil;

[super dealloc];

}

- (id)initWithStyle:(UITableViewStyle)style

{

self = [super initWithStyle:style];

if (self) {

// Custom initialization

}

return self;

}

- (void)viewDidLoad

{

[super viewDidLoad];

// Uncomment the following line to preserve selection between presentations.

// self.clearsSelectionOnViewWillAppear = NO;

// Uncomment the following line to display an Edit button in the navigation bar for this view controller.

//     self.navigationItem.rightBarButtonItem = self.editButtonItem;

//读取数据

[self reloadData];

//自定义navigationBar

self.navigationItem.title = @"联系人";

self.view.backgroundColor = [UIColor brownColor];

}

//读取数据

- (void)reloadData

{

//获取文件路径

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Contact.plist" ofType:nil];

//通过文件路径获取数据

self.groupDic = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];

//获取所有的key

NSArray *keys = [_groupDic allKeys];

//转换为可变数组并排序

self.allKeys = [NSMutableArray arrayWithArray:keys];

[_allKeys sortUsingSelector:@selector(compare:)];

//封装对象

//遍历

for (NSString *key in _allKeys) {

NSMutableArray *group = [_groupDic valueForKey:key];

//创建对象数组

NSMutableArray *newGroup = [[NSMutableArray alloc] init];

//遍历数组

for (NSMutableDictionary *perDic in group) {

//创建对象

Contact *contact = [[Contact alloc] init];

//赋值

[contact setValuesForKeysWithDictionary:perDic];

//放入数组

[newGroup addObject:contact];

}

//替换数组

[_groupDic setValue:newGroup forKey:key];

}

}

//获取对应分组

- (NSMutableArray *)getGroupWithSection:(NSInteger)section

{

NSString *key = [_allKeys objectAtIndex:section];

NSMutableArray *group = [_groupDic valueForKey:key];

return group;

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

// Return the number of sections.

return _allKeys.count;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

NSMutableArray *group = [self getGroupWithSection:section];

// Return the number of rows in the section.

return group.count;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *identifier = @"aa";

static NSString *girl = @"girl";

//获取对应分组

NSMutableArray *group = [self getGroupWithSection:indexPath.section];

//获取对应联系人

Contact *contact = [group objectAtIndex:indexPath.row];

if ([contact.sex isEqualToString:@"男"]) {

ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

if (!cell) {

cell = [[ContactCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];

}

cell.contact = contact;

return cell;

}

GirlCell *cell = [tableView dequeueReusableCellWithIdentifier:girl];

if (!cell) {

cell = [[GirlCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:girl];

}

cell.contact = contact;

//    ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

//    if (!cell) {

//        cell = [[ContactCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];

//    }

//

//    //先获取对应分组

//    NSMutableArray *group = [self getGroupWithSection:indexPath.section];

//    //获取对应联系人

//    Contact *contact = [group objectAtIndex:indexPath.row];

//    cell.contact = contact;

//

////    //cell赋值

////    cell.textLabel.text = contact.name;

////    cell.detailTextLabel.text = contact.phoneNumber;

////    cell.imageView.image = [UIImage imageNamed:contact.photoName];

//

//    // Configure the cell...

//

////    cell.nameView.text = contact.name;

////    cell.photoView.image = [UIImage imageNamed:contact.photoName];

////    cell.phoneView.text = contact.phoneNumber;

////    cell.descriptionView.text = contact.description;

return cell;

}

//分区title

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

return [_allKeys objectAtIndex:section];

}

//侧边导航栏

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

{

return _allKeys;

}

//row高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

//获取对应分组

NSMutableArray *group = [self getGroupWithSection:indexPath.section];

//获取对应的联系人

Contact *contact = [group objectAtIndex:indexPath.row];

//获取高度

CGFloat height = [GirlCell heightWithString:contact.description];

return 120 + height;

}

UITableViewCell的更多相关文章

  1. UITableViewCell定制

    UITableViewCell定制 效果       特点 1.可以添加不同的TableViewCell,可以定制不同的cell样式; 2.可以动态改变cell的高度; 3.可以随意摆放你cell的位 ...

  2. 自定义UITableViewCell实现左滑动多菜单功能LeftSwipe

    今天愚人节,小伙们,愚人节快乐! 实现一个小功能,滑动菜单,显示隐藏的功能菜单, 先上图:                       这里尝试用了下使用三个方式来实现了这个功能: 1.使用自定义UI ...

  3. 【ios开发】UITableViewCell的重用

    移动开发需要解决的一个问题就是资源稀缺的问题.多数情况下是内存问题. 虽然现在的手机都号称大内存,高配置.但是移动app所占用的资源也在跟着不断膨胀, 也是造成内存不足的主要原因. 在前面的例子中,还 ...

  4. UITableViewCell 的附件类型 accessoryType 选中、详情、箭头

    UITableViewCell * cell = [[UITableViewCell alloc] init]; 设置cell的附件类型: // >1 打钩 选中//    cell.acces ...

  5. 【转】自定义UITableViewCell(registerNib: 与 registerClass: 的区别)

    自定义UITableViewCell大致有两类方法: 使用nib 1.xib中指定cell的Class为自定义cell类型(注意不是设置File's Owner的class) 2.调用 tableVi ...

  6. 动态计算UITableViewCell高度

    动态计算UITableViewCell高度 UILabel in UITableViewCell Auto Layout - UILabel的属性Lines设为了0表示显示多行.Auto Layout ...

  7. 【Swift】UITableViewCell 中 TTTAttributedLabel 超链接无法点击的问题

    前言 还以为是自己代码写的有问题,用法和别的地方都一样,但是这个是在 UITableViewCell 中使用,另外在 tableHeaderView 中使用也没用这个问题 —— 使用 TTTAttri ...

  8. 【swift学习笔记】三.使用xib自定义UITableViewCell

    使用xib自定义tableviewCell看一下效果图 1.自定义列 新建一个xib文件 carTblCell,拖放一个UITableViewCell,再拖放一个图片和一个文本框到tableviewc ...

  9. UITableViewCell的重用机制

    UITabelView一般会显示大量数据,如果有多少条数据就新建多少个cell,那么对于内存来说是种极大的负担,这样自然是不合理的,所以才会有重用机制 比如一个家庭办酒席,一共有13桌,每桌20个菜, ...

  10. iOS UITableViewCell的"滑动出现多个按钮"

    本文授权转载,作者:@夏天是个大人了 前言: 本篇博客其实就是想介绍tableviewcell滑动的一些"事",昨天在逛github的时候看到的还挺有意思的三方库,简单用了一下感觉 ...

随机推荐

  1. 机电传动控制 PLC梯形图编程练习

    交通灯控制 在如下图的场景中,打开SW1开关后,交通灯控制器开始工作,关闭SW1则控制器停止工作. 梯形图: 仿真结果: 可以满足所需要求. 输送带控制 输送带场景如下图: 梯形图: 仿真结果: 满足 ...

  2. 复利计算器(4)——jQuery界面美化、自动补全

    一.分工 这次终于可以跟小伙伴合作了,经过讨论,我负责界面的美化和输入框自动补全,小伙伴擅长安卓,于是将复利计算器弄成app的任务就交给了小伙伴.为了我们两人团队,我们都好奋斗哈哈哈!! 二.界面美化 ...

  3. ThinkPHP开启事物

    $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->startTrans();//在第一个模型里启用就可以了,或者第二个也行 $result= ...

  4. 参考__CSS参考

    库 CsshakeAnimate.css

  5. java aes_cbc_256 加密解密

    在之前我们在openssl上和ios上分别测试了 AES256位cbc模式的加密和解密 今天用java提供的api来测试一下:进而确定一下在PC,iOS,安卓上三个平台下的加密解密数据: 1. 首先通 ...

  6. WEB服务器配置

    1.这是我的新服务器,还未做任何配置,系统为windows server2012 R2. 2.首先打开IE浏览器,这里弹出一个对话框,我选择的不推荐. 3.然后下载jdk,并安装 安装直接点下一步,下 ...

  7. 字符串0.在php和js中转换为布尔类型 值是false还是true

    在php 中 $a = '0'; $b = (bool)$a; var_dump($a);//输出false 在js中官方说明: Note:If the value parameter is omit ...

  8. 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete

    上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介 ...

  9. 关于PHP函数time() date() 和 strtotime() 的时区问题

    最近项目中有个需求, 要记录新注册用户的次日登录情况, 于是写出了如下代码: $create_time = '用户注册时间'; //格式 Y-m-d H:i:s $time = time(); $la ...

  10. python【0】-目录

    python[1]-基础知识 Python[2]-列表和元组 Python[3]-字典dic和集合set python[4]-函数 python[5]-生成式,生成器 python[6]-函数式编程 ...