添加数据源, 由三个函数来回答数据绑定的请求:numberOfSectionsInTableView, numberOfRowsInSection 和 cellForRowAtIndexPath.
用numberOfSectionsInTableView方法来返回table中有几个组.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
用numberOfRowsInSection方法来返回每个组里有几行
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
return nRecords;
}
最后用cellForRowAtIndexPath来得到一个包含每一行显示信息的UITableViewCell对象. UITableViewCell类支持文本和图像,编辑和删除确认等功能. 这些信息会保存在表队列里,用来至此翻页等功能,但是内存很低的时候会自动释放,然后再需要的时候重新创建.
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = [ [ NSString alloc ] initWithFormat:
@"Cell %d", [ indexPath indexAtPosition: 1 ] ];
UITableViewCell *cell = [ tableView dequeueReusableCellWithIdentifier: CellIdentifier ];
if (cell == nil) {
cell = [ [ [ UITableViewCell alloc ]
initWithFrame: CGRectZero reuseIdentifier: CellIdentifier ]
autorelease
];
}
cell.text = CellIdentifier;
return cell;
}
NSIndexPath用来保存哪一组的哪一行.
[ indexPath indexAtPosition: 0 ]哪一组
[ indexPath indexAtPosition: 1 ]哪一行
7.2 UITableViewCell包含图像,文本等.
NSString *CellIdentifier = [ [ NSString alloc ] initWithString: @"Frank" ];
UITableViewCell *cell = [ [ [ UITableViewCell alloc ]
initWithFrame: CGRectZero
reuseIdentifier: CellIdentifier
] autorelease
];
然后你可以为每一个cell设置不同的风格
(1) 显示文本: cell.text = @"Frank's Table Cell";
(2) 对齐: cell.textAlignment = UITextAlignmentLeft;
UITextAlignmentLeft 默认是左对齐
UITextAlignmentRight 右对齐
UITextAlignmentCenter 中对齐
(3) 字体和尺寸:
#import <UIKit/UIFont.h>
UIFont *myFont = [ UIFont fontWithName: @"Arial" size: 18.0 ];
cell.font = myFont;
//系统字体
UIFont *mySystemFont = [ UIFont systemFontOfSize: 12.0 ];
UIFont *myBoldSystemFont = [ UIFont boldSystemFontOfSize: 12.0 ];
UIFont *myItalicSystemFont = [ UIFont italicSystemFontOfSize: 12.0 ];
(4) 颜色
#import <UIKit/UIColor.h>
//文本颜色
cell.textColor = [ UIColor redColor ];
//当前选择项的颜色
cell.selectedTextColor = [ UIColor blueColor ];
(5) 图像
//从你应用程序目录下的文件创建一个image
cell.image = [ UIImage imageNamed: @"cell.png" ];
//当前选中项的图形
cell.selectedImage = [ UIImage imageNamed: @"selected_cell.png" ];
可以修改table保准行高来适应你的图形高度
- (id)init
{
self = [ super init ];
if (self != nil) {
self.tableView.rowHeight = 65;
}
return self;
}
你也可以为每一个cell定义不同的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([ indexPath indexAtPosition: 1 ] == 0)
return 65.0;
else
return 40.0;
}
(6)选中项的风格
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
UITableViewCellSelectionStyleBlue 默认选中项是蓝色
UITableViewCellSelectionStyleGray 灰色
UITableViewCellSelectionStyleNone 没有变化
(7)标签 (labels)
在偏移量100x0处创建一个尺寸50x50 label:
UILabel *label = [ [ UILabel alloc ] initWithFrame: CGRectMake(100.0, 0.0, 50.0, 50.0) ];
label.text = @"Label Text";
label.textAlignment = UITextAlignmentLeft;
label.textColor = [ UIColor redColor ];
label.font = [ UIFont fontWithName: @"Arial" size: 10.0 ];
标签label可以设置文本阴影,甚至可以定义阴影的偏移:
label.shadowColor = [ UIColor grayColor ];
label.shadowOffset = CGSizeMake(0, -1);
高亮是的颜色:
label.highlightedTextColor = [ UIColor blackColor ];
标签的背景色:
label.backgroundColor = [ UIColor blueColor ];
把标签加到cell里
[ cell addSubview: label ];
(8) 附件
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
Style
Description
UITableViewCellAccessoryNone
没有附件
UITableViewCellAccessoryDisclosureIndicator
黑色向右的箭头
UITableViewCellAccessoryDetailDisclosureButton
蓝色附件按钮
UITableViewCellAccessoryCheckmark
复选框,支持选择
7.3 实现多选
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Selected section %d, cell %d",
[ indexPath indexAtPosition: 0 ], [ indexPath indexAtPosition: 1 ]);
//获的当前选择项
UITableViewCell *cell = [ self.tableView cellForRowAtIndexPath: indexPath ];
//显示复选框
if (cell.accessoryType == UITableViewCellAccessoryNone)
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
cell.accessoryType = UITableViewCellAccessoryNone;
}
7.4 编辑和删除
在允许用户删除和编辑的时候,每一个cell左边会显示一个红色删除图标
[ self.tableView setEditing:YES animated:YES ];
关闭编辑的时候,table顶部会显示一个Edit导航条
[ self.tableView setEditing: NO animated: YES ];
在编辑过程中,如果用户要删除该项,会弹出一个删除确认框. 确认后调UITableViewDataSource类的commitEditingStyle方法来通知你的应用程序, 然后你可以从你的底层数据源里删除该项,并通知table view删除该行.
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle) editingStyle
forRowAtIndexPath:(NSIndexPath *) indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
NSLog(@"Deleted section %d, cell %d", [ indexPath indexAtPosition: 0 ], [ indexPath indexAtPosition: 1 ]);
NSMutableArray *array = [ [ NSMutableArray alloc ] init ];
[ array addObject: indexPath ];
[ self.tableView deleteRowsAtIndexPaths: array
withRowAnimation: UITableViewRowAnimationFade
];
}
}
通过传递一个数组给deleteRowsAtIndexPaths方法, 可以删除一行或多行.
withRowAnimation至此下列预定义的删除动画
Animation
Description
UITableViewRowAnimationFade
Cell fades out
UITableViewRowAnimationRight
Cell slides out from right
UITableViewRowAnimationLeft
Cell slides out from left
UITableViewRowAnimationTop
Cell slides out to top of adjacent cell
UITableViewRowAnimationBottom
Cell slides out to bottom of adjacent cell
7.5 重新加载表
当你的数据变了的时候,你可以重新加载整个表
[ self.tableView reloadData ];
相关推荐
IOS开发 tableview中cell的用法 值得拥有
iphone开发TableView编辑 不错的学习资料
tableview手动适应cell高度,以及iOS8之后自动适应cell高度
表格的隐藏与展示,成熟的Demo,逻辑以及思路都在文件中写有注释,应该还是比较好理解的,和服务器的数据对接也比较容易。
实现TableView自定义Cell折叠效果
这个是一个显示QQ菜单的列子,代码写的不多的 但是该实现的功能现在已经完成!
iphone 实例 tableview 04 04-Cell Kinds.rar
iphone 网格tableview实例,很好用,需要的可以下一下
TableView的Cell上播放视频
iphone开发实例 TableView 02b-Changing BG via Offset.rar
此资源为iphone开发应用中TableView的使用,涉及到X-code编程和Interface Builder的基础操作,介绍了Objective-c的知识,以及在使用TableView的过程中所涉及到的问题解答,代码中运用到了表视图和表视图单元格的各种...
点击cell上面的按钮进行当前cell的展开和收缩,并只进行当前行的刷新。
swift tableview cell展开/折叠 填写信息, tableview自适应高度,tableview的cell嵌套tableview 自适应
iphone开发实例 TableView 01-Basic Table
自定义cell,实现cell横向滑动,分界线实现渐变效果,手势UIPanGestureRecognizer控制,动画,详细得中文解释
类似iphone通讯录的一个tableView,对初学者很有用,很容易看懂...
swift ,使用autolayout + storyboard 最外层tableview列表,cell里面嵌套了tableview,自适应内容,cell里的tableview不可滑动,内容全部显示,且文字分行显示,不用设置cell的高度直接可以自适应内容
tableview cell 倒计时
IPhone TableView 图片异步加载
通过button的点击事件,完成对cell个数的增加和减少