关于UI通讯录

做了好几天的通讯录,微微有些心得,在这里希望能跟大家 分享一下,同时也加深自己的记忆。入过很多坑,所以经验应该对新手有所帮助。

首先我卡住的地方就是数据解析,一般数据都是字典套数组,数组里再套字典,这应该是最基础的数据解析了。但由于是新手所以还是绕了很久。

先说下思路,想要获取字典所有的联系人,首先必须要通过Key值(也就是联系人分组名)获得所有联系人的分组,然后再遍历这些分组,最后才能过去所有联系人。

//通过遍历的Key值获取每个联系人分组里所有的联系人并存入数组

//数据解析

- (void)analyData

{

NSString *path = [[NSBundle mainBundle]pathForResource:@"Contact" ofType:@"plist"];

self.ContactDic = [NSMutableDictionary dictionaryWithContentsOfFile:path];

self.keyArr = [NSMutableArray array];

self.keyArr = [[_ContactDic.allKeys sortedArrayUsingSelector:@selector(compare:)]mutableCopy];

self.modelArr = [NSMutableArray array];

for (NSString *key in _ContactDic) {

NSArray *array = _ContactDic[key];

for (NSDictionary *dic in array) {

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

[model setValuesForKeysWithDictionary:dic];

[_modelArr addObject:model];

}

}


然后第二个注意点就是利用model传值,我们都知道,从前往后传值一般使用属性,从后往前传值一般使用block或者代理,而model则可以用作传值的参数,但是赋值的时候需要特别注意,model存值得方式类似与字典,取值赋值都需要key和value来进行。赋值方法如下:

//通过属性赋值,将信息传到显示信息的界面

- (void)getMessage

{

self.NameLabel.text = [_contact valueForKey:@"name"];

self.SexLabel.text = [_contact valueForKey:@"sex"];

self.PhoneNumLabel.text = [_contact valueForKey:@"phoneNumber"];

self.IntroduceLabel.text = [_contact valueForKey:@"introduce"];

self.imageV.image = [UIImage imageNamed:[_contact valueForKey:@"photoName"]];

}//这里通过setValueForKey的方法来实现赋值。


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

{

//这里的_keyArr是我用来存储所有分组名的可变数组

//去model得

NSString *key = _keyArr[indexPath.section];

NSArray *array = _ContactDic[key];

Contact *model = array[indexPath.row];

TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell" forIndexPath:indexPath];

if (!cell) {

cell = [[TableViewCell alloc]initWithStyle:(UITableViewCellStyleValue2) reuseIdentifier:@"CustomCell"];

}

cell.model = model;

return cell;

}

这里的话一定要注意model的类型,不然创建出来的Cell是无法赋上值的.


//如果想要自定义cell的高度可以使用该方法

+ (CGFloat)getHeightWidthLab4:(NSString *)text

{

CGSize baseSize = CGSizeMake(KScreenW - 20, CGFLOAT_MAX);

NSDictionary *attrDic = @{NSFontAttributeName : [UIFont systemFontOfSize:17]};

CGRect rectToFit = [text boundingRectWithSize:baseSize options:(NSStringDrawingUsesLineFragmentOrigin) attributes:attrDic context:nil];

return rectToFit.size.height;

}

只需要在给Cell布局时将Cell的高度定义成这个返回值即可,然后在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

这个方法中将返回值调用,就可以根据Label的高度来确定Cell的高度了

感觉这个方法不是太过重要,因为i之后StoryBoard中只需要写两个属性:self.tableView.rowHeight = UITableViewAutomaticDimension;

self.tableView.estimatedRowHeight = 10;

就可以实现自定义Cell了。

这只是通讯录的一小部分,新人会经常犯的错误,老司机就不用看了,太过于浅薄。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容