UITableView常用属性介绍
//设置UITableView 样式
@property (nonatomic, readonly) UITableViewStyle style;
UITableViewStylePlain // 常规表视图
UITableViewStyleGrouped // 偏好样式表视图
//设置UITableView dataSource
@property (nonatomic, assign) id <UITableViewDataSource> dataSource;
//设置UITableView delegate
@property (nonatomic, assign) id <UITableViewDelegate> delegate;
//设置UITableView 单元格 高
@property (nonatomic) CGFloat rowHeight;
//设置UITableView 分区头高
@property (nonatomic) CGFloat sectionHeaderHeight;
//设置UITableView 分区尾高
@property (nonatomic) CGFloat sectionFooterHeight;
//设置UITableView 分割线样式
@property(nonatomic) UITableViewCellSeparatorStyle separatorStyle;
//设置UITableView 分割线颜色
@property(nonatomic,retain) UIColor *separatorColor;
//设置UITableView 头部视图
@property(nonatomic,retain) UIView *tableHeaderView;
//设置UITableView 尾部视图
@property(nonatomic,retain) UIView *tableFooterView;
//设置UITableView 背景
@property(nonatomic, readwrite, retain) UIView *backgroundView
//设置UITableView 是否可以编辑(默认是不可以编辑NO状态)
@property(nonatomic,getter=isEditing) BOOL editing;
//设置UITableView 不在编辑状态,是否允许选择 (默认是YES)
@property(nonatomic) BOOL allowsSelection;
//设置UITableView 在编辑状态,是否允许选择 (默认是NO)
@property(nonatomic) BOOL allowsSelectionDuringEditing;
//设置UITableView 是否支持多项选择 (默认是NO状态,iOS 5.0才支持)
@property(nonatomic) BOOL allowsMultipleSelection;
//设置UITableView 在编辑状态,是否允许多项选择 默认是NO状态,iOS 5.0才支持)
@property(nonatomic) BOOL allowsMultipleSelectionDuringEditing;
常用方法介绍
- (void)reloadData;
//重新加载UITableView中分区的数据
- (void)reloadSectionIndexTitles
获得 某一行的cell对象
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;
// 从UITableView管理的“可重用表格队列”中取出一个UITableViewCell对象
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier;
// iOS6新方法
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;
------------------------------------------------------------------------------------
如果需要使用这个方法,你必须使用配套的方法来一起用,下面两个配套方法:
- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier;
- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier;
比如已经用NIB做了一个Cell,或者自定义了一个Cell。在创建UITableView的时候,就可以顺带
self.tableView.backgroundColor = xxxx;
[self.tableView registerClass:[CustomCell class] forCellReuseIdentifier:@"CustomCell"];
这样在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath这个方法里,就可以省下这些代码:
static NSString *CellIdentifier = @"Cell";
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
//设置你的cell
}
而只需要
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
------------------------------------------------------------------------------------
// 设置UITableView 动画效果
- (void)setEditing:(BOOL)editing animated:(BOOL)animated;
//返回指定的 row 的高度。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath;
//返回指定的 分区的header view 的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
//返回指定的 分区 的footer view 的高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
返回指定的 分区 的header的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
返回指定的 分区 的 header 的 title,如果这个 分区 header 有返回view,那么title就不起作用了
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
返回指定的 分区 header 的view,如果没有,这个函数可以不返回view
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
当用户选中某个行的cell的时候,回调用本方法。但是首先,必须设置tableview的一个属性为可以select 才行。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
响应用户点击cell 右边的 箭头(如果有的话)
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
UITableViewDataSource常用方法介绍
//返回有多少个section(默认是1)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
//通过indexpath返回具体的cell(必须实现)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
//每个section下cell的个数(必须实现)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
//每个section上面的标语内容
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
//每个section下面的标语内容
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;
// Editing
//是否可编辑
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;
// Moving/reordering
// 是否可拖拽
-tableView:moveRowAtIndexPath:toIndexPath:
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath;
// Index
//右侧索引条需要的数组内容
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;
// return list of section titles to display in section index view (e.g. "ABCD...Z#")
//索引值对应的section-index
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index; // tell table which section corresponds to section title/index (e.g. "B",1))
// Data manipulation - insert and delete support
// 对Cell编辑后的回调
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;
// 对Cell拖拽后的回调
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath;
UITableViewDelegate常用方法介绍
//将要展示Cell/header/Footer视图回调
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section;
- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section;
//完成展示Cell/header/Footer视图回调
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath ;
- (void)tableView:(UITableView *)tableView didEndDisplayingHeaderView:(UIView *)view forSection:(NSInteger)section;
- (void)tableView:(UITableView *)tableView didEndDisplayingFooterView:(UIView *)view forSection:(NSInteger)section;
// Variable height support
// 每个cell高度的返回(这里高度通过协议返回,是为了table能准确的定位出要显示的Cell-index,从而满足UITableView的重用机制)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
// 每个section-header高度的返回
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
// 每个section-footer高度的返回
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
// Section header & footer information. Views are preferred over title should you decide to provide both
//可返回每个section-header的自定义视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; // custom view for header. will be adjusted to default or specified header height
//可返回每个section-footer的自定义视图
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section; // custom view for footer. will be adjusted to default or specified footer height
// Selection
// Cell高亮的回调,一般式在选择的时候才高亮
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath;
// Cell选中和取消选择的回调
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;
- (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath;
// Called after the user changes the selection.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath;
UITableViewCell常用方法介绍
// 初始化一个列,设置样式和可重用标示符
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
UITableViewCellStyle类型:
1、UITableViewCellStyleDefault
该格式提供了一个简单的左对齐的文本标签textLabel和一个可选的图像imageView。如果显示图像,那么图像将在最左边。
这种格式虽然可以设置detailTextLabel,但是不会显示该标签。
2、UITableViewCellStyleSubtitle
该格式与前一种相比,增加了对detailTextLabel的支持,该标签将会显示在textLabel标签的下面,字体相对较小。
3、UITableViewCellStyleValue1
该格式居左显示textLabel,居右显示detailTextLabel,且字体较小。
4、UITableViewCellStyleValue2
该格式居左现实一个小型蓝色主标签textLabel,在其右边显示一个小型黑色副标题详细标签detailTextLabel。
该格式不支持图像
// 列左边的图标
@property (nonatomic, readonly, retain) UIImageView *imageView
// 列的内容视图
@property (nonatomic, readonly, retain) UIView *contentView;
// 列的文本标题
@property (nonatomic, readonly, retain) UILabel *textLabel
// 列的详细内容
@property (nonatomic, readonly, retain) UILabel *detailTextLabel
// 列的可重用标示符
@property (nonatomic, readonly, copy) NSString *reuseIdentifier;
// 列附加按钮的样式
@property (nonatomic) UITableViewCellAccessoryType accessoryType;
共有如下几种:
UITableViewCellAccessoryNone;//cell没有任何的样式
UITableViewCellAccessoryDisclosureIndicator;//cell的右边有一个小箭头,距离右边有十几像素;
UITableViewCellAccessoryDetailDisclosureButton;//cell右边有一个蓝色的圆形button;
UITableViewCellAccessoryCheckmark;//cell右边的形状是对号;