IOS 中列表的TableView 详解,常用方法整理
一、创建一个列表,不管代码还是nib拖拉,在nib创建的时候,记得加他的二个代理 (UITableViewDelegate UITableViewDataSource)
代码创建的话,需要关联他的代理,nib创建则不需要关联,他自动会关联。。。代码创建关联的方法为
1 LXDataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)];
2
3 [LXDataTable setDelegate:self];
4
5 [LXDataTable setDataSource:self];
6
7 [self.view addSubview:DataTable];
8
9 [LXDataTable release];
二、UITableview的每一个代理的Method 使用和 讲解
1 //Section总数
2
3 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
4
5 return TitleData;
6
7 }
8
9 // Section Titles
10
11 //每个section显示的标题
12
13 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
14
15 return @"";
16
17 }
18
19 //指定有多少个分区(Section),默认为1
20
21 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
22
23 return 4;
24
25 }
26
27 //指定每个分区中有多少行,默认为1
28
29 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
30
31 }
32
33 //绘制Cell
34
35 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
36
37 static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
38
39 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
40
41 SimpleTableIdentifier];
42
43 if (cell == nil) {
44
45 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
46
47 reuseIdentifier: SimpleTableIdentifier] autorelease];
48
49 }
50
51 cell.imageView.image=image;//未选cell时的图片
52
53 cell.imageView.highlightedImage=highlightImage;//选中cell后的图片
54
55 cell.text=//.....
56
57 return cell;
58
59 }
60
61 //行缩进
62
63 -(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{
64
65 NSUInteger row = [indexPath row];
66
67 return row;
68
69 }
70
71 //改变行的高度
72
73 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
74
75 return 40;
76
77 }
78
79 //定位
80
81 [TopicsTable setContentOffset:CGPointMake(0, promiseNum * 44 + Chapter * 20)];
82
83 //返回当前所选cell
84
85 NSIndexPath *ip = [NSIndexPath indexPathForRow:row inSection:section];
86
87 [TopicsTable selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionNone];
88
89 [tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];
90
91 //选中Cell响应事件
92
93 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
94
95 [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失
96
97 }
98
99 //判断选中的行(阻止选中第一行)
100
101 -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
102
103 {
104
105 NSUInteger row = [indexPath row];
106
107 if (row == 0)
108
109 return nil;
110
111 return indexPath;
112
113 }
114
115 //划动cell是否出现del按钮
116
117 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
118
119 }
120
121 //编辑状态
122
123 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
124
125 forRowAtIndexPath:(NSIndexPath *)indexPath
126
127 {
128
129 }
130
131 [topicsTable setContentSize:CGSizeMake(0,controller.promiseNum * 44)];
132
133 //右侧添加一个索引表
134
135 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
136
137 }
138
139 //返回Section标题内容
140
141 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
142
143 }
144
145 //自定义划动时del按钮内容
146
147 - (NSString *)tableView:(UITableView *)tableView
148
149 titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
150
151 //跳到指的row or section
152
153 [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];
三、在UITableViewCell上建立多个 UILable ,来代替cell的加载显示
1 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
2
3 static NSString *CellIdentifier = @"Cell";
4
5 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
6
7 if (cell == nil) {
8
9 cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
10
11 UILabel *Datalabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 320, 44)];
12
13 [Datalabel setTag:100];
14
15 Datalabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
16
17 [cell.contentView addSubview:Datalabel];
18
19 [Datalabel release];
20
21 }
22
23 UILabel *Datalabel = (UILabel *)[cell.contentView viewWithTag:100];
24
25 [Datalabel setFont:[UIFont boldSystemFontOfSize:18]];
26
27 Datalabel.text = [data.DataArray objectAtIndex:indexPath.row];
28
29 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
30
31 return cell;
32
33 }
34
35 //选中cell时的颜色
36
37 typedef enum {
38
39 UITableViewCellSelectionStyleNone,
40
41 UITableViewCellSelectionStyleBlue,
42
43 UITableViewCellSelectionStyleGray
44
45 } UITableViewCellSelectionStyle
46
47 //cell右边按钮格式
48
49 typedef enum {
50
51 UITableViewCellAccessoryNone, // don‘t show any accessory view
52
53 UITableViewCellAccessoryDisclosureIndicator, // regular chevron. doesn‘t track
54
55 UITableViewCellAccessoryDetailDisclosureButton, // blue button w/ chevron. tracks
56
57 UITableViewCellAccessoryCheckmark // checkmark. doesn‘t track
58
59 } UITableViewCellAccessoryType
60
61 //是否加换行线
62
63 typedef enum {
64
65 UITableViewCellSeparatorStyleNone,
66
67 UITableViewCellSeparatorStyleSingleLine
68
69 } UITableViewCellSeparatorStyle//改变换行线颜色
70
71 tableView.separatorColor = [UIColor blueColor];
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。