iOS——TabelView
2015-12-28 20:14
369 查看
UITableView的API总结:
创建对象:
UITableView *tableView = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style:(UITableViewStylePlain)];
配置属性
2.1 配置单元格的行高
tableView.rowHeight = 100;
2.2 配置单元格分割线的颜色
tableView.separatorColor = [UIColor redColor];
2.3 配置单元格分割线的样式
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
2.4 配置tableView的表头
2.4.1 准备表头视图
UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 50)];
headerView.backgroundColor = [UIColor greenColor];
2.4.2 将准备的视图赋值给tableView的表头视图属性
tableView.tableHeaderView = headerView; //add好像也可以
[headerView release];
2.5 配置tableView表尾
UIView *footView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 50)];
footView.backgroundColor = [UIColor redColor];
tableView.tableFooterView = footView;
[footView release];
快速去除多余的单元格
tableView.tableFooterView = [[[UIView alloc]init] autorelease];
// 2.6 配置数据源代理
tableView.dataSource = self;
// 2.7 配置业务代理
tableView.delegate = self;
方法的实现
返回的分区的个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
// 根据数组元素的个数,确定分区的个数(分了多少个区,如果方法不实现,默认是1)
return self.bigArray.count;
}
返回每个分区对应的行数 —required
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// 根据分区的下标找出大数组中的小数组的元素
return [self.bigArray[section] count];
}
在这个方法中创建单元格,并为单元格配置数据—required
- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// UItableViewCell 单元格视图
// UITableViewCellStyle 格式有四种
UITableViewCell *cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:nil]autorelease]; // 注意,需要释放
// cell重用的步骤:
1. 创建一个重用标识(重用ID),这个标识在cell创建的时候使用,也在重用池中去cell时判断使用
//*// 如果把这个变量使用static修饰,使其只能被初始化一次,可以稍微提高重用效率
static NSString *identfier = @“cell”;
2. 当需要一个单元格是,先去“重用池”中根据“重用ID”去查有没有可以使用的单元格,如果有,就直接拿来使用(修改单元格上的数据),如果没有,此时只能直接创建一个新的cell;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identfier];
3. 判断是否成功取到可重用的cell
if (cell == nil){ // !cell
cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:identfier]autorelease];
}
cell.imageView.image = [UIImage imageNamed:@”1”];
给cell的textlabel赋上文本内容
cell.textLabel.text =[NSString stringWithFormat:@”%ld–%ld”,indexPath.section,indexPath.row];
给cell的 detailTextLabel 附上文本内容
cell.detailTextLabel.text = @“房子”
给cell的右边界设置辅助视图,有五种
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// 将辅助视图设置为Switch开关控件
cell.accessoryView = [[[UISwitch alloc]init]autorelease];
// 又或者可以自定义辅助视图:
UIView *accessoryView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 40, 20)];
accessoryView.backgroundColor = [UIColor redColor];
cell.accessoryView = accessoryView;
[accessoryView release];
// cell上有两个视图,一个是 contentView 一个是 accessoryView(用来放辅助视图的地方),而我们用到的 cell 属性 textLabel,detailLabel,imageView 这些视图都是放在 contentView 上面,所以当我们自定义cell的时候,一定要把自定义的空间放在contentView上. 在没有添加辅助视图的情况下,accessoryView默认是没有的,此时contentView占了整个视图,一旦accessoryView出现,就会自动整理出空间。
如果添加到cell.accessoryView上,是看不见的,它只能存放辅助视图
配置每个分区的页眉(区头)的 title
(NSString )tableView:(UITableView )tableViewtitleForHeaderInSection:(NSInteger)section{
// 根据排好序的数组返回区头(数组方法)
return self.orderkey[section];
}
* UITableView 的父类是UIScorllView,所以他是可以滚动的,但是只能在竖直方向上 * 它是iOS中提供的用来以列表的形式展示数据,但是只有一列 * 它可以由多个分组构成(section-分组),每个分组下可以有很多行,分组和行的下标都是从零开始 (sention 班级分组, row 同学所在的排数) * UITableView可以有两种样式(plain)(grouped),一旦给tableView指定样式之后,就不能修改了 * UITableView 的很多方法都和NSIndexpath有关,NSIndexpath 中存储的是当前你要使用的单元格(cell)所在分区的下标和所在分区中行的下标
创建对象:
UITableView *tableView = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style:(UITableViewStylePlain)];
配置属性
2.1 配置单元格的行高
tableView.rowHeight = 100;
2.2 配置单元格分割线的颜色
tableView.separatorColor = [UIColor redColor];
2.3 配置单元格分割线的样式
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
2.4 配置tableView的表头
2.4.1 准备表头视图
UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 50)];
headerView.backgroundColor = [UIColor greenColor];
2.4.2 将准备的视图赋值给tableView的表头视图属性
tableView.tableHeaderView = headerView; //add好像也可以
[headerView release];
2.5 配置tableView表尾
UIView *footView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 50)];
footView.backgroundColor = [UIColor redColor];
tableView.tableFooterView = footView;
[footView release];
快速去除多余的单元格
tableView.tableFooterView = [[[UIView alloc]init] autorelease];
// 2.6 配置数据源代理
tableView.dataSource = self;
// 2.7 配置业务代理
tableView.delegate = self;
方法的实现
返回的分区的个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
// 根据数组元素的个数,确定分区的个数(分了多少个区,如果方法不实现,默认是1)
return self.bigArray.count;
}
返回每个分区对应的行数 —required
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// 根据分区的下标找出大数组中的小数组的元素
return [self.bigArray[section] count];
}
在这个方法中创建单元格,并为单元格配置数据—required
- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// UItableViewCell 单元格视图
// UITableViewCellStyle 格式有四种
UITableViewCell *cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:nil]autorelease]; // 注意,需要释放
pargma mark cell的重用
// cell的重用是为了避免反复的消耗系统资源,还能达到节省内存的作用// cell重用的步骤:
1. 创建一个重用标识(重用ID),这个标识在cell创建的时候使用,也在重用池中去cell时判断使用
//*// 如果把这个变量使用static修饰,使其只能被初始化一次,可以稍微提高重用效率
static NSString *identfier = @“cell”;
2. 当需要一个单元格是,先去“重用池”中根据“重用ID”去查有没有可以使用的单元格,如果有,就直接拿来使用(修改单元格上的数据),如果没有,此时只能直接创建一个新的cell;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identfier];
3. 判断是否成功取到可重用的cell
if (cell == nil){ // !cell
cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:identfier]autorelease];
}
pargma mark 从数组中区数组数据展示
// 1. 先取出大数组中的元素 NSArray *nameArray = self.bigArray[indexPath.section]; // 2. 从nameArray中取出名字 NSString *name = nameArray[indexPath.row]; // 将取出来的名字赋值给 cell.textLabel.text cell.textLabel.text = name; cell.imageView.image = [UIImage imageNamed:@"1"];
pargma mark 给cell上设置的其他属性
给cell的imageView属性赋值cell.imageView.image = [UIImage imageNamed:@”1”];
给cell的textlabel赋上文本内容
cell.textLabel.text =[NSString stringWithFormat:@”%ld–%ld”,indexPath.section,indexPath.row];
给cell的 detailTextLabel 附上文本内容
cell.detailTextLabel.text = @“房子”
给cell的右边界设置辅助视图,有五种
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// 将辅助视图设置为Switch开关控件
cell.accessoryView = [[[UISwitch alloc]init]autorelease];
// 又或者可以自定义辅助视图:
UIView *accessoryView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 40, 20)];
accessoryView.backgroundColor = [UIColor redColor];
cell.accessoryView = accessoryView;
[accessoryView release];
// cell上有两个视图,一个是 contentView 一个是 accessoryView(用来放辅助视图的地方),而我们用到的 cell 属性 textLabel,detailLabel,imageView 这些视图都是放在 contentView 上面,所以当我们自定义cell的时候,一定要把自定义的空间放在contentView上. 在没有添加辅助视图的情况下,accessoryView默认是没有的,此时contentView占了整个视图,一旦accessoryView出现,就会自动整理出空间。
如果添加到cell.accessoryView上,是看不见的,它只能存放辅助视图
配置每个分区的页眉(区头)的 title
(NSString )tableView:(UITableView )tableViewtitleForHeaderInSection:(NSInteger)section{
// 根据排好序的数组返回区头(数组方法)
return self.orderkey[section];
}
相关文章推荐
- iOS小知识点
- iOS 开发批量保存图片到相册时丢图片的解决方法
- [IOS]NULL与nil的区别
- iOS——使用ScrollView进行图片的缩放
- iOS——制作简单的View时系统方法的使用
- iOS——分类 延展 协议
- IOS准备
- ios 防止按钮快速点击造成多次响应的避免方法。
- iOS——结构体指针
- iOS——指针进阶
- iOS——内存动态分布
- iOS——函数
- iOS——指针
- iOS——结构体
- iOS——一维数组
- ios开发常用的宏定义
- iOS开发中的公共方法
- 对iOS锁的一些研究
- iOS同步对象性能对比(iOS锁性能对比)
- iOS Provisioning Profile(Certificate)与Code Signing详解