27.iOS中最重要的视图UITableView表视图第二章

原创 2015年11月21日 14:00:25

这里写图片描述

准备1:添加了一个数据源Class25ContactList.plist

================================

准备2:创建一个CellModel类

字典中有几个键值对 就要创建几个属性

注意:属性的名字 就是键值对中的key 要完全一致

@interface CellModel : NSObject

@property (nonatomic,retain)NSString *name;

@property (nonatomic,retain)NSString *gender;

@property (nonatomic,retain)NSString *age;

@property (nonatomic,retain)NSString *phoneNumber;

@property (nonatomic,retain)NSString *hobby;

@property (nonatomic,retain)NSString *picture;

@end

在CellModel.m”中

kvc间接访问属性 保护方法 必须要实现的

- (void)setValue:(id)value forUndefinedKey:(NSString *)key

{

可以捕获错误的key 可以打印出来

NSLog(@”%@”,key);

}

================================

准备3:创建一个视图控制器(接收传值的)

创建一个继承于UIViewController的控制器

@interface SecondViewController : UIViewController

声明属性用于接收数据

@property (nonatomic,retain)NSString *name;

@property (nonatomic,retain)NSString *gender;

@property (nonatomic,retain)NSString *age;

@property (nonatomic,retain)NSString *phoneNumber;

@property (nonatomic,retain)NSString *hobby;

@property (nonatomic,retain)NSString *picture;

@end

===================================

创建表视图

-(void)addTableView

{

UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:(UITableViewStyleGrouped)];

tableView.dataSource = self;

tableView.delegate = self;

[self.view addSubview:tableView];

[tableView release];

}

添加数据处理的方法

- (void)setUpData

{

取出路径

NSString *path = [[NSBundle mainBundle]pathForResource:@”Class25ContactList” ofType:@”plist”];

用字典接收路径(路径里是一个字典)

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

创建一个字典保存新的字典

self.dataDic = [NSMutableDictionary dictionary];

取出所有key

NSArray *keys = dic.allKeys;

for (int i = 0; i < keys.count; i++) {

取出每一个key

NSString *key = keys[i];

创建一个临时数组

NSMutableArray *values = [NSMutableArray array];

取出每一个数组

NSArray *temparray = dic[key];

遍历每一个temparray

for (NSDictionary *oneDic in temparray) {

创建model

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

给model赋值

[model setValuesForKeysWithDictionary:oneDic];

你给我一个字典 我还你一个赋值完成model

[values addObject:model];

释放

[model release];

}

重新构建 字典的键值对

[self.dataDic setObject:values forKey:key];

}

取出所有的key

NSArray *akeys = self.dataDic.allKeys;

对key进行排序

self.sortKeysArray = [akeys sortedArrayUsingSelector:@selector(compare:)];

}

设置有多少个分区

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return self.dataDic.count;

}

设置每一区有多少行(必须实现)

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

{

用分区 取出对应的key

NSString *key = self.sortKeysArray[section];

用这个key取出对应的数组

NSArray *values = self.dataDic[key];

return values.count;

}

必须实现

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

{

static NSString *identifier = @”Mycell”;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:identifier] autorelease];

}

取出对应的key

NSString *key = self.sortKeysArray[indexPath.section];

取出key对应的value

NSArray *values = self.dataDic[key];

用model接收数组中的model

CellModel *model = values[indexPath.row];

cell.textLabel.text = model.name;

cell.detailTextLabel.text = model.phoneNumber;

return cell;

}

设置分区标头的标题

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

{

return self.sortKeysArray[section];

}

设置右边的按钮

- (NSArray )sectionIndexTitlesForTableView:(UITableView )tableView

{

return self.sortKeysArray;

}

实现点击跳转传值

- (void)tableView:(UITableView )tableView didUnhighlightRowAtIndexPath:(NSIndexPath )indexPath

{

SecondViewController *secondVC = [[SecondViewController alloc] init];

取出对应分区的key

NSString *key = self.sortKeysArray[indexPath.section];

取出对应的values

NSArray *values = self.dataDic[key];

取出对应的model

CellModel *model = values[indexPath.row];

传值

secondVC.name = model.name;

secondVC.age = model.age;

secondVC.gender = model.gender;

secondVC.phoneNumber = model.phoneNumber;

secondVC.picture = model.picture;

secondVC.hobby = model.hobby;

调转页面

[self.navigationController pushViewController:secondVC animated:NO];

}

===================================

版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS --- UITableView 表示图(头部和尾部)

UITableView UITableView是继承自UIScrollView的滚动表视图. 且只能纵向滚动  UITableView主要由Section(分区)和row(行数)两个NSIntege...
  • qq_17007915
  • qq_17007915
  • 2015年12月10日 14:42
  • 2691

26.iOS中最重要的视图UITableView表视图第一章

表视图 UITableView,iOS中最重要的视图,随处可⻅。表视图通常⽤来管理⼀组具有相同数据结构的数据。UITableView继承⾃UIScrollView,所以可以滚动表视图的每⼀条数据都是显...
  • mn704058053
  • mn704058053
  • 2015年11月21日 11:35
  • 351

视图与临时表

视图与临时表的概述、比较与应用场合。
  • zhangzeguang88
  • zhangzeguang88
  • 2014年05月18日 10:20
  • 4091

数据库视图和表的区别

区别: 1、视图是已经编译好的sql语句。而表不是 2、视图没有实际的物理记录。而表有。 3、表是内容,视图是窗口 4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存...
  • DennisRuan
  • DennisRuan
  • 2016年04月22日 14:23
  • 2464

视图和中间表

区别:1、视图是已经编译好的sql语句。而表不是  2、视图没有实际的物理记录。而表有。  3、表是内容,视图是窗口  4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时...
  • CsethCRM
  • CsethCRM
  • 2013年12月20日 15:05
  • 1012

视图与冗余物理表的查询性能测试

如果有30张表,他们各自有各自的自定义字段,也有一部分公有字段;需要将公有字段归一起来统一查询,一般而言有两种方式: 1.公共字段物理表 数据在入库/更新时,更新自己的表的数据,同时亦将数据更新入公共...
  • rongyongfeikai2
  • rongyongfeikai2
  • 2016年05月24日 10:11
  • 1770

视图和表的区别和联系

区别:       1、视图是已经编译好的sql语句。而表不是          2、视图没有实际的物理记录。而表有。       3、表是内容,视图是窗口       4、表只用物理空间而视...
  • zengmingen
  • zengmingen
  • 2016年03月29日 11:15
  • 4705

Oracle 中的一些重要V$ 动态性能视图,系统视图和表

v$database:数据库的信息,如数据库名,创建时间等。 v$instance 实例信息,如实例名,启动时间。 v$parameter 参数信息,select * from v$p...
  • xiaobluesky
  • xiaobluesky
  • 2015年12月02日 22:46
  • 2627

IOS开发UI展示之UITableView ──分页加载更多

在ios开中中,由于屏幕尺寸限制,如果需要显示的数据很多,需要用到分页加载。 原理:先数据放到一个table中,先显示10条,table底部有一察看更多选项,点击察看更多查看解析的剩余数据。基本上就...
  • wwwang89123
  • wwwang89123
  • 2013年07月11日 10:11
  • 1179

SQL: 视图和表的区别

区别: 1、视图是已经编译好的sql语句。而表不是 2、视图没有实际的物理记录。而表有。 3、表是内容,视图是窗口 4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四...
  • delphi308
  • delphi308
  • 2014年03月20日 20:21
  • 11413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:27.iOS中最重要的视图UITableView表视图第二章
举报原因:
原因补充:

(最多只允许输入30个字)