iOS开发之高级视图—— UITableView常用方法


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; 


常用方法介绍


//重新加载UITableView中单元格的数据
- (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常用方法介绍


UITableViewDataSource主要为UITableView提供显示用的数据(UITableViewCell),和对UITableViewCell进行编辑操作(新增,删除,更新,排序)。


//返回有多少个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常用方法介绍


UITableViewDelegate主要提供一些可选的方法,用来控制tableView的选择、指定section的头和尾的显示以及协助完成cell的删除和排序等功能。


//将要展示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常用方法介绍


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右边的形状是对号;













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值