UITableViewBase UI_09
API文档总结:

1.UITableView的父类时,UIScrollView,所以它是可以滚动的,但是只能在竖直方向滚动.
2.UITableView是iOS中提供的用来以列表的形式展示数据,但是只有一列.
3.UITableView可以由多个分组构成(section),每个分组下可以有很多行(row),分组和行的下标都是从零开始.(eg:sention
班级分组 row 同学所在排数)
4.UITbleview可以有两种样式(Plain)和(Grouped)样式,一旦给tableView指定了样式之后就不能修改了;
5.UITableView很多方法都和NSIndexPath有关,NSIndexPath中存储的是当前你要使用的单元格(cell)所在分区的下标和所在分区中行的下标
UITableView
*tableView =
[[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style: UITableViewStylePlain
];

2.配置属性
2.1配置单元格(cell)的高
tableView.rowHeight = 100;
2.2配置cell分割线的颜色
tableView.separatorColor = [UIColor redColor];
2.3配置cell
分割线的样式
tableView.separatorStyle =
UITableViewCellSeparatorStyleSingleLine;
//UITableViewCellSeparatorStyleNone,
//UITableViewCellSeparatorStyleSingleLine,
//UITableViewCellSeparatorStyleSingleLineEtched
2.4.1配置tableView的表头(表头很重要,经常用来做轮播图)
//
UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,
kScreenWidth, 50)];
//
headerView.backgroundColor = [UIColor redColor];
2.4.2.将准备的视图赋值给tableView的表头视图属性
tableView.tableHeaderView = headerView;
2.5配置tableView表尾
//
UIView *footView = [[UIView alloc]initWithFrame:CGRectMake(0, 508,
kScreenWidth, 40)];
//
footView.backgroundColor = [UIColor cyanColor];
//
tableView.tableFooterView = footView;
//快速去除多余单元格
//
tableView.tableFooterView = [[UIView
alloc]init];

tableView.dataSource = self;
2.7配置业务代理
tableView.delegate = self;
3.添加到父视图
[self.view addSubview:tableView];
4.释放
[tableView release];
//cell上有两个视图,一个是contentView
一个是accessoryView 而我们用到的cell属性
textLabel,detailTextLabel,imageView这些视图都是在contentView上,所以当我们自定义的控件放到contentView上
tableView的数据源代理方法

(NSInteger)numberOfSectionsInTableView:(UITableView
*)tableView{
根据数组元素的格式确定分区个数
//
return self.bigArray.count;
根据字典键值对的个数确定分区的个数
return
self.dictionary.count;
}
返回每个分区对应的行数
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section{
根据分区的下标找出大数组中小数组中元素
//
return [self.bigArray[section]count];
//第一步:根据分区下的下标取出self.orderkey数组中存放的key值
NSString
*key =
self.orderkey[section];
//第二步:使用key取出字典中的value值(数组)并取出数组的元素个数
//
[self.dictionary objectForKey:key];
return
[self.dictionary[key]count];
}
——————————————————————————————
//在这个方法中创建单元格并对单元格配置数据
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// UITableViewCell
单元格视图 继承自UIView 用来展示数据
UITableViewCell *cell = [[[UITableViewCell
alloc]initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:nil]autorelease];
//cell的重用是为了避免反复消耗资源,耗能达到节省内存的作业
//cell重用的步骤
//1.创建一个重用标识(重用ID),这个标识在cell创建的时候使用,也在从重用池取cell时判断使用
//面试题:使用static修饰重用标识的字符串变量,可以使其只被初始化一次,提高一下重用效率
static
NSString
*identfier
= @"cell";
//2.当需要一个单元格(cell)时,先去"重用池"中根据"重用ID"去查找有没有可以使用单元格
//如果有:直接从重用池中拿出来使用(修改单元格上的数据)
//如果没有:此时只能直接创建一个新的单元格
//tableView就是当前代理的委托人
UITableViewCell
*cell =
[tableView dequeueReusableCellWithIdentifier:identfier];
//3.判断是否成功取到可重用的cell
if (cell == nil) {// !cell
一个意思
NSLog(@"=========");
cell = [[[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleValue1)
reuseIdentifier:identfier]autorelease];

1.给cell的imageView属性赋值
cell.imageView.image = [UIImage imageNamed: @"11"];
//2.给cell的textLabel赋上文本内容
cell.textLabel.text = [NSString
stringWithFormat:@"%ld--%ld",indexPath.section,indexPath.row];
//3.给cell的detailLabel 赋上文本内容
cell.detailTextLabel.text = @"邓丽君";
//4.设置cell 的右边界辅助视图
cell.accessoryType =
UITableViewCellAccessoryDisclosureIndicator;
//
cell.accessoryView = [[[UISwit ch alloc]init]autorelease];
//自定义辅助视图
UIView *accessoryView =[[UIView alloc]initWithFrame:CGRectMake(0,
0, 40, 20)];
accessoryView.backgroundColor = [UIColor redColor];
cell.accessoryView = accessoryView;
//
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(300, 0, 20,
cell.frame.size.height)];
//
view.backgroundColor = [UIColor orangeColor];
[cell addSubview:view];
}

- (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section{
//
if (0 == section) {
//
return @"L";
//
}else if (1 == section){
//
return @"W";
//
}else{
//
return @"Z";
//
}
//根据排好序的数组返回区头
return
self.orderkey[section];
}
//配置分区的右侧的分区索引,区头的顺序和数组中的元素一致
- (NSArray *)sectionIndexTitlesForTableView:(UITableView
*)tableView{
//
return @[@"F",@"S",@"G"];
//根据排好序的数组设置右侧分区索引
//配置每个分区的页脚,叫区尾也可以
- (NSString *)tableView:(UITableView *)tableView
titleForFooterInSection:(NSInteger)section{
return
@[@"f",@"s",@"l"][section];
}
- (void)didReceiveMemoryWarning {
[super
didReceiveMemoryWarning];
// Dispose of any
resources that can be recreated.
kScreenWidth [UIScreen
mainScreen].bounds.size.width
#import "DetailViewController.h"
@interface
RootViewController
()<</span>UITableViewDataSource,UITableViewDelegate>
@property(nonatomic,retain)NSArray
*bigArray;
@property(nonatomic,retain)NSDictionary
*dictionary;
@property(nonatomic,retain)NSArray
*orderkey;
@end
@implementation
RootViewController
- (void)dealloc{
self.bigArray
=
nil;
self.dictionary
=
nil;
self.orderkey
=
nil;
[super
dealloc];
NSArray *lArr = @[@"李白",@"李妹",@"李舒缓",@"梨花"];
NSArray
*zArr =
@[@"张波",@"涨姿势",@"张紫琴"];
NSArray
*wArr =
@[@"王小波",@"王伟",@"王小二"];
//
self.bigArray = @[lArr,zArr,wArr];
self.dictionary = @{@"L":lArr,@"Z":zArr,@"W":wArr};
//取出字典中所有的key值
NSArray
*keys =
self.dictionary.allKeys;
//将排好序的key值赋值给self.orderkey
self.orderkey = [keys sortedArrayUsingSelector:@selector(compare:)];
tableView的业务代理方法

- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (0 != indexPath.row % 2) {
return
80;
}else{
return
200;
}
:点击cell的时候会触发,所以要完成点击cell跳转到其他页面,方法实现写在这个方法中
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//
NSLog(@"%ld --
%ld",indexPath.section,indexPath.row);
DetailViewController
*detail =
[[DetailViewController
alloc]init];
detail.textString = [NSString stringWithFormat:@"%ld -- %ld",indexPath.section,indexPath.row];
[self.navigationController
pushViewController:detail
animated:YES];
[detail release];
//触发时机:点击一个cell之后,在点击其他的cell时触发
- (void)tableView:(UITableView *)tableView
didDeselectRowAtIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(3_0){
%ld",indexPath.section,indexPath.row);
从数组中取数据展示
//1.先取出大数组中的元素
NSArray
*nameArray =
self.bigArray[indexPath.section];
//2.从nameArray取出名字
NSString
*name =
nameArray[indexPath.row];
//
NSLog(@"%@",name);
//3.将给出来的名字赋值给cell.textLabel.text
cell.textLabel.text = name;
cell.imageView.image = [UIImage imageNamed:@"11"];
#pragma mark
从字典中取出数据显示
//1.根据分区下标取出self.order
中的元素
NSArray
*key =
self.orderkey[indexPath.section];
//2.取出key值在字典中对应的数字
NSArray
*names =
self.dictionary[key];
//3.根据行下标取出数组中的名字,并赋值给textLabel.text
cell.textLabel.text =
names[indexPath.row];


欢迎学习本文,未经博主许可禁止转载!
UITableViewBase UI_09的更多相关文章
随机推荐
- js中对象的自定义排序
//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数 var compareAsc = function (prop) { return function (obj1, obj2) { va ...
- find 命令查找文件,文件夹
查找文件 find / -name httpd.conf 查找文件夹 find / -name "*1526*" -type d, 其中双引号里的东西表示文件夹名字包含" ...
- iOS支付宝,微信,银联支付集成封装调用(下)
一.越来越多的app增加第三方的功能,可能app有不同的页面但调用相同的支付方式,例如界面如下: 这两个页面都会使用第三方支付支付:(微信,支付宝,银联)如果在每一个页面都直接调用第三方支付的接口全部 ...
- JavaScript 字符串(String)对象
String 对象用于处理已有的字符块. JavaScript 字符串 一个字符串用于存储一系列字符就像 "John Doe". 一个字符串可以使用单引号或双引号: 实例 var ...
- Python3 多线程
多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...
- Programming In Scala笔记-第十七章、Scala中的集合类型
本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...
- 【mybatis深度历险系列】mybatis中的输入映射和输出映射
在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...
- Python 通过继承实现标准对象的子类
idict是dict的子类,它的键值和属性是同步的,并且有强大的默认值机制. 例如,假设x是idict的一个实例,且x['a']['b']=12,则有x.a.b=12.反之亦然; 假设'c'不在x的键 ...
- activiti实战系列 activiti连线
11:连线 11.1:流程图 注意:如果将流程图放置在和java类相同的路径,需要配置: 11.2:部署流程定义+启动流程实例 11.3:查询我的个人任务 11.4:完成任务 说明: 1)使用流程变量 ...
- Android Multimedia框架总结(五)多媒体基础概念
转载请把头部出处链接和尾部二维码一起转载,本文出自: http://blog.csdn.net/hejjunlin/article/details/52431887 上篇中介绍了MediaPlayer ...