UITableView(表视图)
来源:互联网 发布:网络客服的注意事项 编辑:程序博客网 时间:2024/05/12 18:48
1.UITableView
UITableView继承于UIScrollView,表视图的每一条数据都显示在UITableViewCell对象中,表视图可以分区显示数据,每个分区成为一个section,每一行为row,编号都是从零开始.
2.表视图的创建
<span style="font-size:18px;">//初始化一个UITableView self.tableView = [[UITableView alloc]initWithFrame:self.frame style:UITableViewStyleGrouped]; //separatorStyle:表视图的分割线样式 self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; //表视图分割线的颜色 self.tableView.separatorColor = [UIColor redColor]; //rowHeight:表视图的行高(设置行高一般使用协议中的方法) self.tableView.rowHeight = 100;</span>
3.表视图显示
3.1表视图显示需要遵循两个协议,即UITableViewDataSource和UITableViewDelegate这两个协议.
其中在UITableViewDataSource中有了两个必须实现的方法.
第一个必须实现的方法.
<pre name="code" class="objc"><span style="font-size:18px;">//设置(每一个)section中row的数量-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return 5;}</span>
第二个必须实现的方法.
<span style="font-size:18px;">//显示每一行的内容-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //初始化一个UITableViewCell() self.tableCell = [tableView dequeueReusableCellWithIdentifier:@"cell_id"]; if (nil == self.tableCell) { self.tableCell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell_id"]; } self.tableCell.textLabel.text = [self.array3[indexPath.section][indexPath.row]valueForKey:@"name"]; self.tableCell.detailTextLabel.text = [self.array3[indexPath.section][indexPath.row]valueForKey:@"Tel"]; self.tableCell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[self.array3[indexPath.section][indexPath.row]valueForKey:@"image"]]]; self.tableCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; // self.tableCell.selectionStyle = UITableViewCellSelectionStyleNone; return self.tableCell;}</span>
以下的方法为常用方法(不是一定要实现)
<span style="font-size:18px;">//设置UItableView的分组数目-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 2;}</span>
<span style="font-size:18px;">//重新加载数据(重新加载数据调用reloadData方法)-(void)viewDidDisappear:(BOOL)animated{ [self.rootView.tableView reloadData];}</span>
<span style="font-size:18px;">//实现跳转和传值</span><pre name="code" class="objc"><span style="font-size:18px;">-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ _detailVC.image = self.tableCell.imageView.image; _detailVC.stringName = self.tableCell.textLabel.text; _detailVC.stringTel = self.tableCell.detailTextLabel.text; [self.navigationController pushViewController:self.detailVC animated:YES];}</span>
<span style="font-size:18px;">//设置cell的header的距离-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 50;}//向UITableViewCell的header中添加视图-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ UIView *view = [[UIView alloc]initWithFrame:tableView.tableHeaderView.frame]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(222, 20, 100, 20)]; label.text = @"Cocoa"; [view addSubview:label]; if (section == 0) { return view; }else{ return 0; }}//向UITableViewCell中的foot中添加视图-(UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ return 0;}</span>
4.表视图的重用机制
UITableView是靠mutableSet来实现重用功能
出屏幕的cell会被添加到mutableSet中,进屏幕的cell,先从set中获取,如果获取不到,才创建一个cell.在cell显示之前,给cell赋上相应的内容.cell的reusableIdentify是重用的关键.
//UITableViewCell的重用 self.tableCell = [tableView dequeueReusableCellWithIdentifier:@"cell_id"]; if (nil == self.tableCell) { self.tableCell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell_id"]; }
0 0
- UITableView表视图控件
- swift UITableView 表视图
- UITableView 表视图
- UITableView 表视图
- UI UITableView表视图
- UITableView 表视图
- UITableView表视图
- UITableView 表视图
- UITableView(表视图)
- UITableView:表视图
- [TwistedFate]UITableView表视图
- 11 UITableView表视图
- UITableView(表视图)
- UITableView表视图简单使用
- UITableView表视图的编辑
- iOS UITableView表视图(1)
- ios UITableView表视图(2)
- 第九讲:UITableView表视图
- Hello World
- 怎么求人眼图像中的噪声
- 5道经典的程序题 (5)
- 破解优酷战略迷局
- 鉴定qq群中的红包真假
- UITableView(表视图)
- HDU 4029 Distinct Sub-matrix(hash + 后缀数组)
- Java——面向对象概述
- cin.getline()的学习心得(Xcode下)
- Linux操作系统-进程和信号(2)
- [转载]函数编写规范
- sublime小技巧
- 关于WebView加载URL时显示一片空白的问题
- CuteFTP、FlashFXP、FileZilla 基本应用比较