UITableView
//滚动到当前行
[self tableViewScrollCurrentIndexPath];
1..h文件里添加协议
@interface HwjViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
2.声明变量
@interface HwjViewController ()
{
//声明UITableView视图
UITableView *_tableView;
//数据源数组
NSMutableArray *_dataArray;
}
3.tableView基本设置
- (void)creatTableView{
//创建数据源数组 来提供数据
_dataArray = [[NSMutableArray alloc]init];
//给数据源数组添加数据
for (int i = 0; i<5; i++) {
NSString *name = [NSString stringWithFormat:@"第%d行",i];
[_dataArray addObject:name];
}
//创建tableView视图
_tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
//设置代理
_tableView.delegate = self;
//设置数据源 提供数据的对象
_tableView.dataSource = self;
//对tableView进行设置
//设置分割线颜色
_tableView.separatorColor = [UIColor redColor];
//设置分割线类型
//UITableViewCellSeparatorStyleNone没有分割线
//UITableViewCellSeparatorStyleSingleLine 单线
//UITableViewCellSeparatorStyleSingleLineEtched 没有线
_tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
//设置头视图 只有高度有效
UIImageView *HeaderView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 200, 200)];
//头视图高度有影响
HeaderView.image = [UIImage imageNamed:@"huancun.jpg"];
//设置头视图
_tableView.tableHeaderView = HeaderView;
//设置尾视图
UIImageView *FooterView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 100)];
FooterView.image = [UIImage imageNamed:@"huancun.jpg"];
//设置尾视图
_tableView.tableFooterView = FooterView;
[self.view addSubview:_tableView];
}
4.代理基本设置
#pragma mark - 创建cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//cell复用标志
static NSString *cellID = @"cellId";
//从复用队列获取是否有cellID标志对应的可复用的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil) {
//创建cell
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID] autorelease];
//cell上有一个contentView ,cell 上的内容都粘到了contentView上 所有我们要想在cell 上粘贴自己的内容必须要在contentView 上粘贴
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(290, cell.contentView.bounds.size.height/2, 15, 15)];
label.tag = 1001;//设置tag 值
[cell.contentView addSubview:label];
[label release];
//把一个label 粘贴到contentView上
}
NSLog(@"contentView:%@",cell.contentView);
UILabel *label = (UILabel *)[cell.contentView viewWithTag:1001];
label.text = [NSString stringWithFormat:@"%d",indexPath.row];//显示哪一行
//indexPath:保存的是第几分区的第几行
//分区:indexPath.section 行:indexPath.row
//对cell 内容进行修改
cell.textLabel.text = [NSString stringWithFormat:@"第%c分区",indexPath.section+'A'];
//获取数据源的数据
//1.先得到分区数据 一个一维数组
// NSMutableArray *arr = _dataArray[indexPath.section];
// cell.detailTextLabel.text = [arr objectAtIndex:indexPath.row];
cell.detailTextLabel.text = _dataArray[indexPath.section][indexPath.row];
//设置cell的左侧图片
cell.imageView.image = [UIImage imageNamed:@"11.jpeg"];
/*
//没有选中效果
UITableViewCellSelectionStyleNone,
//下面几个都是灰色风格的
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray,
UITableViewCellSelectionStyleDefault
*/
//选中之后都是灰的
//设置cell 的选中风格
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
//设置选中背景视图
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 320, 44)];
//坐标大小没有影响
redView.backgroundColor = [UIColor redColor];
cell.selectedBackgroundView = redView;
[redView release];
//设置背景颜色
cell.backgroundColor = [UIColor grayColor];
//设置背景图片
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
//table_cell_bg比较小 我们可以自己实现拉伸
imageView.image = [[UIImage imageNamed:@"table_cell_bg"] stretchableImageWithLeftCapWidth:5 topCapHeight:5];
//stretchableImageWithLeftCapWidth拉伸图片
//距离左侧5像素 不拉伸 从第6像素开始拉伸
//距离顶部5像素 不拉伸 从第6像素开始拉伸
//应用气泡聊天
cell.backgroundView = imageView;
[imageView release];
return cell;
}
//设置分区的个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
//返回1代表1个分区
return 1;
}
//设置行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//返回1代表1行
return 1;
}
//设置指定分区的头标标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
NSString *nss = @“头标题";
return nss;
}
//设置指定分区的脚标标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
NSString *nss = @"脚标题";
return nss;
}
//设置cell 的行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
//默认行高44
return 50;
}
//选中指定行 调用
//已经选中
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"第%d行选中",indexPath.row);
}
//取消选中的时候调用
//从选中状态到非选中状态
//反选
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"第%d行取消选中/反选",indexPath.row);
}
1 -?(void)viewDidLoad??
2 {??
3 ????[super?viewDidLoad];??
4 ????//初始化数据??
5 ????NSArray?*array1_=@[@"张铁林",@"张国立",@"张国荣",@"张艺谋",@"张惠妹"];??
6 ????NSArray?*array2_=@[@"李小龙",@"李小路"];??
7 ????NSArray?*array3_=@[@"王刚"];??
8 ????self.myDic=@{@"老张家":array1_,?@"老李家":array2_,?@"老王家":array3_};??
9 ??
10 ??????
11 ????UITableView?*myTableView_=[[UITableView?alloc]?initWithFrame:CGRectMake(0,?0,?320,?460)?style:UITableViewStylePlain];??
12 ????myTableView_.delegate=self;??
13 ????myTableView_.dataSource=self;??
14 ????//改变换行线颜色lyttzx.com??
15 ????myTableView_.separatorColor?=?[UIColor?blueColor];??
16 ????//设定Header的高度,??
17 ????myTableView_.sectionHeaderHeight=50;??
18 ????//设定footer的高度,??
19 ????myTableView_.sectionFooterHeight=100;??
20 ????//设定行高??
21 ????myTableView_.rowHeight=100;??
22 ????//设定cell分行线的样式,默认为UITableViewCellSeparatorStyleSingleLine??
23 ????[myTableView_?setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];??
24 ????//设定cell分行线颜色??
25 ????[myTableView_?setSeparatorColor:[UIColor?redColor]];??
26 ????//编辑tableView??
27 ????myTableView_.editing=NO;??
28 ??
29 ????[self.view?addSubview:myTableView_];??
30 ??????
31 ????//跳到指的row?or?section??
32 ????[myTableView_?scrollToRowAtIndexPath:[NSIndexPath?indexPathForRow:2?inSection:2]??
33 ?????????????????????atScrollPosition:UITableViewScrollPositionBottom?animated:NO];??
34 ??
35 }??
36 ??
37 ??
38 ??
39 //指定有多少个分区(Section),默认为1??
40 -?(NSInteger)numberOfSectionsInTableView:(UITableView?*)tableView?{??
41 ????return?[[self.myDic?allKeys]?count];??
42 }??
43 ??
44 ??
45 //每个section底部标题高度(实现这个代理方法后前面?sectionHeaderHeight?设定的高度无效)??
46 -(CGFloat)tableView:(UITableView?*)tableView?heightForHeaderInSection:(NSInteger)section{??
47 ????return?20;??
48 }??
49 ??
50 //每个section头部标题高度(实现这个代理方法后前面?sectionFooterHeight?设定的高度无效)??
51 -(CGFloat)tableView:(UITableView?*)tableView?heightForFooterInSection:(NSInteger)section{??
52 ????return?20;??
53 }??
54 ??
55 //每个section头部的标题-Header??
56 -?(NSString?*)tableView:(UITableView?*)tableView?titleForHeaderInSection:(NSInteger)section{??
57 ????return?[[self.myDic?allKeys]?objectAtIndex:section];??
58 }??
59 ??
60 //每个section底部的标题-Footer??
61 -?(NSString?*)tableView:(UITableView?*)tableView?titleForFooterInSection:(NSInteger)section{??
62 ????return?nil;??
63 }??
64 ??
65 //用以定制自定义的section头部视图-Header??
66 -(UIView?*)tableView:(UITableView?*)tableView?viewForHeaderInSection:(NSInteger)section{??
67 ????return?nil;??
68 }??
69 ??
70 //用以定制自定义的section底部视图-Footer??
71 -(UIView?*)tableView:(UITableView?*)tableView?viewForFooterInSection:(NSInteger)section{??
72 ????UIImageView?*imageView_=[[UIImageView?alloc]initWithFrame:CGRectMake(0,?0,?320,?20)];??
73 ????imageView_.image=[UIImage?imageNamed:@"1000.png"];??
74 ????return?[imageView_?autorelease];??
75 }??
76 ??
77 ??
78 //指定每个分区中有多少行,默认为1??
79 -?(NSInteger)tableView:(UITableView?*)tableView?numberOfRowsInSection:(NSInteger)section{??
80 ????return?[[self.myDic?objectForKey:[[self.myDic?allKeys]objectAtIndex:section]]?count];??
81 }??
82 ??
83 //改变行的高度(实现主个代理方法后?rowHeight?设定的高度无效)??
84 -?(CGFloat)tableView:(UITableView?*)tableView?heightForRowAtIndexPath:(NSIndexPath?*)indexPath{??
85 ????return?100;??
86 }??
87 ??
88 ??
89 //绘制Cell??
90 -(UITableViewCell?*)tableView:(UITableView?*)tableView?cellForRowAtIndexPath:(NSIndexPath?*)indexPath?{??
91 ????static?NSString?*SimpleTableIdentifier?=?@"SimpleTableIdentifier";??
92 ??????
93 ????UITableViewCell?*cell?=?[tableView?dequeueReusableCellWithIdentifier:??
94 ?????????????????????????????SimpleTableIdentifier];??
95 ??????
96 ????if?(cell?==?nil)?{??
97 ????????cell?=?[[[UITableViewCell?alloc]?initWithStyle:UITableViewCellStyleDefault??
98 ???????????????????????????????????????reuseIdentifier:?SimpleTableIdentifier]?autorelease];??
99 ?????//设定附加视图??
100 ????????[cell?setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton];??
101 //????????UITableViewCellAccessoryNone,???????????????????//?没有标示??
102 //????????UITableViewCellAccessoryDisclosureIndicator,????//?下一层标示??
103 //????????UITableViewCellAccessoryDetailDisclosureButton,?//?详情button??
104 //????????UITableViewCellAccessoryCheckmark???????????????//?勾选标记??
105 ??????????
106 ?????//设定选中cell时的cell的背影颜色??
107 ????????cell.selectionStyle=UITableViewCellSelectionStyleBlue;?????//选中时蓝色效果??
108 //????????cell.selectionStyle=UITableViewCellSelectionStyleNone;?//选中时没有颜色效果??
109 //????????cell.selectionStyle=UITableViewCellSelectionStyleGray;??//选中时灰色效果??
110 //??????????
111 //????????//自定义选中cell时的背景颜色??
112 //????????UIView?*selectedView?=?[[UIView?alloc]?initWithFrame:cell.contentView.frame];??
113 //????????selectedView.backgroundColor?=?[UIColor?orangeColor];??
114 //????????cell.selectedBackgroundView?=?selectedView;??
115 //????????[selectedView?release];??
116 ??
117 ??????????
118 //????????cell.selectionStyle=UITableViewCellAccessoryNone;?//行不能被选中??
119 ??
120 ????}??
121 ??????
122 ????//这是设置没选中之前的背景颜色??
123 ????cell.contentView.backgroundColor?=?[UIColor?clearColor];??
124 ????cell.imageView.image=[UIImage?imageNamed:@"1001.jpg"];//未选cell时的图片??
125 ????cell.imageView.highlightedImage=[UIImage?imageNamed:@"1002.jpg"];//选中cell后的图片??
126 ????cell.textLabel.text=[[self.myDic?objectForKey:[[self.myDic?allKeys]objectAtIndex:indexPath.section]]objectAtIndex:indexPath.row];??
127 ????return?cell;??
128 }??
129 ??
130 ??
131 //行缩进??
132 -(NSInteger)tableView:(UITableView?*)tableView?indentationLevelForRowAtIndexPath:(NSIndexPath?*)indexPath{??
133 ????NSUInteger?row?=?[indexPath?row];??
134 ????return?row;??
135 }??
136 ??
137 //选中Cell响应事件??
138 -?(void)tableView:(UITableView?*)tableView?didSelectRowAtIndexPath:(NSIndexPath?*)indexPath{??
139 ????[tableView?deselectRowAtIndexPath:indexPath?animated:YES];//选中后的反显颜色即刻消失??
140 ??????
141 ????//得到当前选中的cell??
142 ????UITableViewCell?*cell=[tableView?cellForRowAtIndexPath:indexPath];??
143 ????NSLog(@"cell=%@",cell);??
144 }??
145 ??
146 //行将显示的时候调用,预加载行??
147 -(void)tableView:(UITableView?*)tableView?willDisplayCell:(UITableViewCell?*)cell?forRowAtIndexPath:(NSIndexPath?*)indexPath??
148 {??
149 ????NSLog(@"将要显示的行是\n?cell=%@??\n?indexpath=%@",cell,indexPath);??
150 }??
151 ??
152 //选中之前执行,判断选中的行(阻止选中第一行)??
153 -(NSIndexPath?*)tableView:(UITableView?*)tableView?willSelectRowAtIndexPath:(NSIndexPath?*)indexPath??
154 {??
155 ????NSUInteger?row?=?[indexPath?row];??
156 ????if?(row?==?0)??
157 ????????return?nil;??
158 ????return?indexPath;??
159 }??
160 ??
161 ??
162 ??
163 //编辑状态,点击删除时调用??
164 -?(void)tableView:(UITableView?*)tableView?commitEditingStyle:(UITableViewCellEditingStyle)editingStyle??
165 forRowAtIndexPath:(NSIndexPath?*)indexPath??
166 {??
167 ??????
168 }??
169 ??
170 //cell右边按钮格式为UITableViewCellAccessoryDetailDisclosureButton时,点击按扭时调用的方法??
171 -(void)tableView:(UITableView?*)tableView?accessoryButtonTappedForRowWithIndexPath:(NSIndexPath?*)indexPath{??
172 ????NSLog(@"当前点击的详情button?\n?indexpath=%@",indexPath);??
173 }??
174 ??
175 //右侧添加一个索引表??
176 -?(NSArray?*)sectionIndexTitlesForTableView:(UITableView?*)tableView{??
177 ????return?[self.myDic?allKeys];??
178 }??
179 ??
180 //划动cell是否出现del按钮??
181 -?(BOOL)tableView:(UITableView?*)tableView?canEditRowAtIndexPath:(NSIndexPath?*)indexPath?{??
182 ????return?YES;??
183 }??
184 ??
185 //设定横向滑动时是否出现删除按扭,(阻止第一行出现)??
186 -(UITableViewCellEditingStyle)tableView:(UITableView?*)tableView?editingStyleForRowAtIndexPath:(NSIndexPath?*)indexPath??
187 {??
188 ????if?(indexPath.row==0)?{??
189 ????????return?UITableViewCellEditingStyleNone;??
190 ????}??
191 ????else{??
192 ????????return?UITableViewCellEditingStyleDelete;??
193 ????}??
194 ????return?UITableViewCellEditingStyleDelete;??
195 }??
196 ??
197 //自定义划动时delete按钮内容??
198 -?(NSString?*)tableView:(UITableView?*)tableView??
199 titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath?*)indexPath{??
200 ????return?@"删除这行";??
201 、、删除cell 时的动画效果
202 [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
203 ??????????
204 }??
205 ??
206 //开始移动row时执行??
207 -(void)tableView:(UITableView?*)tableView?moveRowAtIndexPath:(NSIndexPath?*)sourceIndexPath?toIndexPath:(NSIndexPath*)destinationIndexPath??
208 {??
209 ????NSLog(@"sourceIndexPath=%@",sourceIndexPath);??
210 ????NSLog(@"sourceIndexPath=%@",destinationIndexPath);??
211 }??
212 ??
213 //滑动可以编辑时执行??
214 -(void)tableView:(UITableView?*)tableView?willBeginEditingRowAtIndexPath:(NSIndexPath?*)indexPath??
215 {??
216 ????NSLog(@"willBeginEditingRowAtIndexPath");??
217 }??
218 ??
219 //将取消选中时执行,?也就是上次先中的行??
220 -(NSIndexPath?*)tableView:(UITableView?*)tableView?willDeselectRowAtIndexPath:(NSIndexPath?*)indexPath??
221 {??
222 ????NSLog(@"上次选中的行是??\n?indexpath=%@",indexPath);??
223 ????return?indexPath;??
224 }??
225 ??
226 ??
227 //让行可以移动??
228 -(BOOL)tableView:(UITableView?*)tableView?canMoveRowAtIndexPath:(NSIndexPath?*)indexPath??
229 {??
230 ????return?NO;??
231 }??
232 ??
233 //移动row时执行??
234 -(NSIndexPath?*)tableView:(UITableView?*)tableView?targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath?*)sourceIndexPath?toProposedIndexPath:(NSIndexPath?*)proposedDestinationIndexPath??
235 {??
236 ????NSLog(@"targetIndexPathForMoveFromRowAtIndexPath");??
237 ????//用于限制只在当前section下面才可以移动??
238 ????if(sourceIndexPath.section?!=?proposedDestinationIndexPath.section){??
239 ????????return?sourceIndexPath;??
240 ????}??
241 ????return?proposedDestinationIndexPath;??
242 }??
243 //设置索引栏字体颜色
_tableView.sectionIndexColor = [UIColor redColor];
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
清馨10456190