代码实现 UITableView与UITableViewCell
来源:互联网 发布:禁用的网络怎么恢复 编辑:程序博客网 时间:2024/05/19 10:37
1.新建工程名为SampleTable , File->New->Project ->single View Application -> next
2.添加UITableViewDataSource,UITableViewDelegate协议
- #import <UIKit/UIKit.h>
- @interface STViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
- @property(strong,nonatomic) NSArray *listData;
- @property(strong,nonatomic)UITableView *tableView;
- @property(strong,nonatomic)UITableViewCell *tableViewCell;
- @end
2.在@implementation STViewController后面添加上
@synthesize listData=_listData;
@synthesize tableView = _tableView;
@synthesize tableViewCell =_tableViewCell
viewDidLoad中实现对界面初始化工作,UITableView有两种风格,
UITableViewStylePlain 默认风格,最常见的
UITableViewStyleGrouped 圆角矩形风格
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- //初始化表格
- self.tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
- // 设置协议,意思就是UITableView类的方法交给了tabView这个对象,让完去完成表格的一些设置操作
- self.tableView.delegate=self;
- self.tableView.dataSource=self;
- //把tabView添加到视图之上
- [self.view addSubview:self.tableView];
- // 存放显示在单元格上的数据
- NSArray *array = [NSArray arrayWithObjects:@"张三",@"张四",@"张五",@"李三",@"李四",@"李五",@"李六",@"王三",@"王四",@"王五",@"王六",@"王七",@"王八",@"王九",@"王十", nil];
- self.listData = array;
- }
3.视图上显示单元格的内容以及一些数据都是都是属性都是依赖于协议的代理方法
- //返回多少个section
- -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
- {
- return 1;
- }
- //返回行数,也就是返回数组中所存储数据,也就是section的元素
- -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- return [self.listData count];
- }
UITableView每一行都有一个UITableViewCell的实例表示,它也继承UIView,也就是每一行又拥有一个子视图,如果是大型表格,这样开销就非常大,所以就有了单元格的重用;当一部分单元格滚出屏幕后,他们被放在一个可重用的单元序列之中。如果系统运行比较慢,表视图就会从序列中删除这些单元,释放空间,如果有储存空间,表视图就会重新获取这些单元,以后面使用;
- -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- // 声明静态字符串型对象,用来标记重用单元格
- static NSString *TableSampleIdentifier = @"TableSampleIdentifier";
- // 用TableSampleIdentifier表示需要重用的单元
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableSampleIdentifier];
- // 如果如果没有多余单元,则需要创建新的单元
- if (cell == nil) {
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TableSampleIdentifier];
- }
- else {
- while ([cell.contentView.subviews lastObject ]!=nil) {
- [(UIView*)[cell.contentView.subviews lastObject]removeFromSuperview];
- }
- }
- // 获取当前行信息值
- NSUInteger row = [indexPath row];
- // 填充行的详细内容
- cell.detailTextLabel.text = @"详细内容";
- // 把数组中的值赋给单元格显示出来
- cell.textLabel.text=[self.listData objectAtIndex:row];
- // cell.textLabel.backgroundColor= [UIColor greenColor];
- // 表视图单元提供的UILabel属性,设置字体大小
- cell.textLabel.font = [UIFont boldSystemFontOfSize:40.0f];
- // tableView.editing=YES;
- /*
- cell.textLabel.backgroundColor = [UIColor clearColor];
- UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
- backgroundView.backgroundColor = [UIColor greenColor];
- cell.backgroundView=backgroundView;
- */
- // 设置单元格UILabel属性背景颜色
- cell.textLabel.backgroundColor=[UIColor clearColor];
- // 正常情况下现实的图片
- UIImage *image = [UIImage imageNamed:@"2.png"];
- cell.imageView.image=image;
- // 被选中后高亮显示的照片
- UIImage *highLightImage = [UIImage imageNamed:@"1.png"];
- cell.imageView.highlightedImage = highLightImage;
- return cell;
- }
- cell.textLabel.backgroundColor= [UIColor greenColor];
- cell.textLabel.backgroundColor = [UIColor clearColor];
- UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
- backgroundView.backgroundColor = [UIColor greenColor];
- cell.backgroundView=backgroundView;
表示UITableViewCell风格的常量有:
UITableViewCellStyleDefault
UITableViewCellStyleSubtile
UITableViewCellStyleValue1
UITableViewCellStyleValue2
- //设置单元格高度
- -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- return 90;
- }
- //设置单元格缩进
- -(NSInteger) tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- NSInteger row = [indexPath row];
- if (row % 2==0) {
- return 0;
- }
- return 2;
- }
- //选中单元格所产生事件
- -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- // 首先是用indexPath获取当前行的内容
- NSInteger row = [indexPath row];
- // 从数组中取出当前行内容
- NSString *rowValue = [self.listData objectAtIndex:row];
- NSString *message = [[NSString alloc]initWithFormat:@"You selected%@",rowValue];
- // 弹出警告信息
- UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示"
- message:message
- delegate:self
- cancelButtonTitle:@"OK"
- otherButtonTitles: nil];
- [alert show];
- }
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
这个方法返回指定的 section的header view 的高度。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
这个方法返回指定的 section的footer view 的高度。
为了增加效果,所以界面显得比较丑陋,附上运行结果截图
附上源代码:http://download.csdn.net/detail/duxinfeng2010/4416166
- 代码实现 UITableView与UITableViewCell
- 代码实现 UITableView与UITableViewCell
- 代码实现 UITableView与UITableViewCell
- 代码实现 UITableView与UITableViewCell
- UITableView与UITableViewCell
- UITableView与UITableViewCell
- UITableView与UITableViewCell
- UITableView与UITableViewCell
- UITableView与UITableViewCell
- UITableView与UITableViewCell
- UITableView与UITableViewCell
- iOS开发:UITableView与UITableViewCell
- UITableView与UITableViewCell的使用
- UITableView与UITableViewCell的透明度
- UITableView&UITableViewCell
- iOS开发14:UITableView与UITableViewCell
- iOS开发13:UITableView与UITableViewCell
- UI023---代码实现UITableView
- static 总结(表格)
- HMM 隐马尔可夫模型
- Java把字符串中的unicode码替换成相应的字符
- Input Layout
- 概率机器学习和人工智能(Probabilistic machine learning and artificial intelligence_Nature2015)
- 代码实现 UITableView与UITableViewCell
- 《Java课程实习》日志(周三)
- 富文本 WPAttributedMarkup
- 黑马程序员---C语言基础---语句概述
- 使用Material Design 创建App翻译系列----材料主题的使用(Using Material Theme)
- JSTL 核心标签库 使用
- 在阿里云服务器上搭建JavaWeb开发环境
- Erlang编码utf8转urlunicode(二)
- 《猜猜看》之周四