iOS开发UI篇UITableview控件基本使用Word格式.docx
《iOS开发UI篇UITableview控件基本使用Word格式.docx》由会员分享,可在线阅读,更多相关《iOS开发UI篇UITableview控件基本使用Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
13@implementationNJViewController
14
15#pragmamark-懒加载
16-(NSArray*)heros
17{
18if(_heros==nil){
19//1.获得全路径
20NSString*fullPath=[[NSBundlemainBundle]pathForResource:
@"
heros"
ofType:
plist"
];
21//2.更具全路径加载数据
22NSArray*dictArray=[NSArrayarrayWithContentsOfFile:
fullPath];
23//3.字典转模型
24NSMutableArray*models=[NSMutableArrayarrayWithCapacity:
dictArray.count];
25for(NSDictionary*dictindictArray){
26NJHero*hero=[NJHeroheroWithDict:
dict];
27[modelsaddObject:
hero];
28}
29//4.赋值数据
30_heros=[modelscopy];
31}
32//4.返回数据
33return_heros;
34}
35
36-(void)viewDidLoad
37{
38[superviewDidLoad];
39//设置Cell的高度
40//当每一行的cell高度一致的时候使用属性设置cell的高度
41self.tableView.rowHeight=60;
42self.tableView.delegate=self;
43}
44
45#pragmamark-UITableViewDataSource
46//返回多少组
47-(NSInteger)numberOfSectionsInTableView:
(UITableView*)tableView
48{
49return1;
50}
51//返回每一组有多少行
52-(NSInteger)tableView:
(UITableView*)tableViewnumberOfRowsInSection:
(NSInteger)section
53{
54returnself.heros.count;
55}
56//返回哪一组的哪一行显示什么内容
57-(UITableViewCell*)tableView:
(UITableView*)tableViewcellForRowAtIndexPath:
(NSIndexPath*)indexPath
58{
59//1.创建CELL
60UITableViewCell*cell=[[UITableViewCellalloc]initWithStyle:
UITableViewCellStyleSubtitlereuseIdentifier:
nil];
61//2.设置数据
62//2.1取出对应行的模型
63NJHero*hero=self.heros[indexPath.row];
64//2.2赋值对应的数据
65cell.textLabel.text=hero.name;
66cell.detailTextLabel.text=hero.intro;
67cell.imageView.image=[UIImageimageNamed:
hero.icon];
68//3.返回cell
69returncell;
70}
71#pragmamark-UITableViewDelegate
72/*
73//当每一行的cell的高度不一致的时候就使用代理方法设置cell的高度
74-(CGFloat)tableView:
(UITableView*)tableViewheightForRowAtIndexPath:
75{
76if(1==indexPath.row){
77return180;
78}
79return44;
80}
81*/
82
83#pragmamark-控制状态栏是否显示
84/**
85*返回YES代表隐藏状态栏,NO相反
86*/
87-(BOOL)prefersStatusBarHidden
88{
89returnYES;
90}
91@end
实现效果:
代码注意点:
(1)在字典转模型的代码处用下面的代码,为可变数组分配dictArray.count个存储空间,可以提高程序的性能
NSMutableArray
*models=[NSMutableArrayarrayWithCapacity:
(2)设置cell的高度
有三种办法可以设置cell的高度
1)
可以在初始加载方法中设置,self.tableView.rowHeight
=
60;
这适用于当每一行的cell高度一致的时候,使用属性设置cell的高度。
2)在storyboard中设置,适用于高度一致
3)当每一行的cell的高度不一致的时候就使用代理方法设置cell的高度
-(CGFloat)tableView:
{
if(1==indexPath.row){
return180;
}
return44;
}
二、cell的一些属性
代码示例:
10
11@end
12
13@implementationNJViewController
14
15#pragmamark-懒加载
16-(NSArray*)heros
17{
18if(_heros==nil){
19//1.获得全路径
20NSString*fullPath=[[NSBundlemainBundle]pathForResource:
21//2.更具全路径加载数据
22NSArray*dictArray=[NSArrayarrayWithContentsOfFile:
23//3.字典转模型
24NSMutableArray*models=[NSMutableArrayarrayWithCapacity:
25for(NSDictionary*dictindictArray){
26NJHero*hero=[NJHeroheroWithDict:
27[modelsaddObject:
28}
29//4.赋值数据
30_heros=[modelscopy];
31}
32//4.返回数据
33return_heros;
35
36-(void)viewDidLoad
37{
38[superviewDidLoad];
39//设置Cell的高度
40//当每一行的cell高度一致的时候使用属性设置cell的高度
41self.tableView.rowHeight=60;
42self.tableView.delegate=self;
43
44}
45
46#pragmamark-UITableViewDataSource
47//返回多少组
48-(NSInteger)numberOfSectionsInTableView:
49{
50return1;
51}
52//返回每一组有多少行
53-(NSInteger)tableView:
54{
55returnself.heros.count;
56}
57//返回哪一组的哪一行显示什么内容
58-(UITableViewCell*)tableView:
59{
60//1.创建CELL
61UITableViewCell*cell=[[UITableViewCellalloc]initWithStyle:
62//2.设置数据
63//2.1取出对应行的模型
64NJHero*hero=self.heros[indexPath.row];
65//2.2赋值对应的数据
66cell.textLabel.text=hero.name;
67cell.detailTextLabel.text=hero.intro;
68cell.imageView.image=[UIImageimageNamed:
69
70//2.3设置cell的辅助视图
71//cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
72if(0==indexPath.row){
73cell.accessoryView=[UIButtonbuttonWithType:
UIButtonTypeContactAdd];
74}else
75{
76cell.accessoryView=[[UISwitchalloc]init];
77}
78//UIButton*btn=[[UIButtonalloc]init];
79//btn.backgroundColor=[UIColorredColor];
80//cell.accessoryView=btn;
81
82
83//2.4设置cell的背景颜色
84cell.backgroundColor=[UIColorblueColor];
85
86//设置默认状态的背景
87//UIView*view=[[UIViewalloc]init];
88//view.backgroundColor=[UIColorblueColor];
89//cell.backgroundView=view;
90
91UIImageView*iv=[[UIImageViewalloc]initWithImage:
[UIImageimageNamed:
buttondelete"
]];
92cell.backgroundView=iv;
93
94//设置选中状态的背景
95UIView*view2=[[UIViewalloc]init];
96view2.backgroundColor=[UIColorpurpleColor];
97cell.selectedBackgroundView=view2;
98//3.返回cell
99returncell;
100}
101
102
103#pragmamark-控制状态栏是否显示
104/**
105*返回YES代表隐藏状态栏,NO相反
106*/
107-(BOOL)prefersStatusBarHidden
108{
109returnYES;
110}
111@end
cell的一些属性:
(1)设置cell的辅助视图,设置cell.accessoryView(系统提供了枚举型,也可以自定义@父类指针指向子类对象);
(2)设置cell的背景颜色,有两种方式可以设置cell的背景颜色:
通过backgroundColor和backgroundView都可以设置cell的背景。
但是backgroundView
的优先级比
backgroundColor的高,所以如果同时设置了backgroundColor和backgroundView,那么backgroundView会盖住backgroundColor
示例:
cell.backgroundColor
=[UIColorblueColor];
(3)设置cell默认状态的背景
示例1:
UIView*view=[[UIViewalloc]init];
view.backgroundColor=[UIColorblueColor];
cell.backgroundView=view;
示例2:
UIImageView
*iv=[[UIImageViewalloc]
initWithImage:
cell.backgroundView
=iv;
(父类指针指向子类对象,可以使用图片用简单的操作设置绚丽的效果)
(4)设置cell选中状态的背景
示例:
UIView
*view2=[[UIView
alloc]
init];
view2.backgroundColor
=[UIColorpurpleColor];
cell.selectedBackgroundView
=view2;
三、tableview的一些属性
#import"
3@interfaceNJViewController()<
UITableViewDataSource>
4
5@end
6
7@implementationNJViewController
8
9-(void)viewDidLoad
10{
11[superviewDidLoad];
13//1.创建tableview
14UITableView*tableview=[[UITableViewalloc]init];
15tableview.frame=self.view.bounds;
17//2.设置数据源
18tableview.dataSource=self;
19
20//3.添加tableview到view
21[self.viewaddSubview:
tableview];
22
23//4.设置分割线样式
24//tableview.separatorStyle=UITableViewCellSeparatorStyleNone;
25
26//5.设置分割线颜色
27接收的参数是颜色的比例值
28tableview.separatorColor=[UIColorcolorWithRed:
0/255.0green:
255/255.0blue:
0/255.0alpha:
255/255.0];
29
30//设置tableview的头部视图
31tableview.tableHeaderView=[UIButtonbuttonWithType:
32tableview.tableFooterView=[[UISwitchalloc]init];
33}
34
35-(NSInteger)numberOfSectionsInTableView:
36{
37return1;
38}
39-(NSInteger)tableView:
40{
41return10;
42}
43
44-(UITableViewCell*)tableView:
45{
46//1.创建cell
47UITableViewCell*cell=[[UITableViewCellalloc]initWithStyle:
UITableViewCellStyleDefaultreuseIdentifier:
48
49//2.设置cell的数据
50cell.textLabel.text=[NSStringstringWithFormat:
%d"
indexPath.row];
51
52//3.返回cell
53returncell;
54}
55
56-(BOOL)prefersStatusBarHidden
57{
58returnYES;
59}
60@end
tableview的一些属性:
(1)设置分割样式(tableview.separatorStyle),这是个枚举类型
(2)设置分割线的颜色,可以直接使用系统给出的颜色,如果系统给定的颜色不能满足需求时,也可以自定义。
补充:
颜色分为24位和32位的,如下
24bit颜色
R8bit0~255
G8bit0~255
B8bit0~255
32bit颜色
A8bit0~255(tou)
R8bit
G8bit
B8bit
#ffffff
白色
#000000
黑色
#ff0000
红色
#2550000
设置为自定义颜色的实例:
tableview.separatorColor
=[UIColorcolorWithRed:
0/255.0green:
255/255.0blue:
0/255.0alpha:
//接收的参数是颜色的比例值
(3)设置顶部和底部视图
tableview.tableHeaderView
//顶部
tableview.tableFooterView
//底部