打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
代码实现 UITableView与UITableViewCell
http://blog.csdn.net/duxinfeng2010/article/details/7724628
我们常用的表格类视图就是用 UITableView与UITableViewCell,UITableViewController继承UIViewContoller,所以只要很少代码就可以显示一个视图,UITableViewController也是UIScrollView子类,所以也有上下滑动效果 ;UITableView和UITableViewCell不能储存数据,可以用来显示特定行数内的数据,而且,也并不是把所有数据都放在单元格cell视图上,而是通过单元格重用和实现UITableViewDataSource,UITableViewDelegate协议的方法形式显示出来;
1.新建工程名为SampleTable , File->New->Project ->single View Application -> next
2.添加UITableViewDataSource,UITableViewDelegate协议
[cpp] view plaincopy
#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  圆角矩形风格
[cpp] view plaincopy
- (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.视图上显示单元格的内容以及一些数据都是都是属性都是依赖于协议的代理方法
[cpp] view plaincopy
//返回多少个section
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
[cpp] view plaincopy
//返回行数,也就是返回数组中所存储数据,也就是section的元素
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.listData count];
}
UITableView每一行都有一个UITableViewCell的实例表示,它也继承UIView,也就是每一行又拥有一个子视图,如果是大型表格,这样开销就非常大,所以就有了单元格的重用;当一部分单元格滚出屏幕后,他们被放在一个可重用的单元序列之中。如果系统运行比较慢,表视图就会从序列中删除这些单元,释放空间,如果有储存空间,表视图就会重新获取这些单元,以后面使用;
[cpp] view plaincopy
-(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;
}
注释内容中有这两个设置表视图背景颜色的属性方法,具体了解可以看这个博客http://haoxiang.org/2010/12/uitableviewcell-background/  讲的比较详细
[cpp] view plaincopy
cell.textLabel.backgroundColor= [UIColor greenColor];
[cpp] view plaincopy
cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
backgroundView.backgroundColor = [UIColor greenColor];
cell.backgroundView=backgroundView;
表示UITableViewCell风格的常量有:
UITableViewCellStyleDefault
UITableViewCellStyleSubtile
UITableViewCellStyleValue1
UITableViewCellStyleValue2
[cpp] view plaincopy
//设置单元格高度
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 90;
}
[cpp] view plaincopy
//设置单元格缩进
-(NSInteger) tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger row = [indexPath row];
if (row % 2==0) {
return 0;
}
return 2;
}
[cpp] view plaincopy
//选中单元格所产生事件
-(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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
scrollView的重要属性,代理方法,tableView的数据源,代理方法,UIPickerView,UIDatePicker,UIToolbar
iOS开发中UITableview控件的基本使用及性能优化方法
TableVIew
iOS中tableView和自定义tableViewCell的使用方法总结
iPhone UITableView
iOS开发
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服