本文描述UITableView的各种方法,属性,委托以及数据源。本文的目的只是总结UITableView的用法,详细的例子另撰文描述。
1 数据源 UITableViewDataSource协议
01 返回组(节)的个数,默认是返回1,如果只有1组数据,可以不用实现该方法。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
02 返回某一组的行数,该组由section的值决定
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
03 返回某一组某一行的UITableViewCell,该行由indexPath决定,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath ,
04 返回某一组的头部标题
- (NSString
*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
05 返回某一组的尾部标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
2 委托 UITableViewDataDelegate协议
01 设置cell的高度。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
02 某一行被选中后,该方法被调用
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
03 返回分组头部视图,下面两个方法必须同时使用,否则出问题
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
3 UITableView的常见属性和方法
01 设置表视图的显示方式:平铺还是多组显示
@property (nonatomic, readonly) UITableViewStyle style;
02 设置cell的高度,通过rowHeight属性设置,所有的行高都是一样的
@property (nonatomic) CGFloat rowHeight;
03 设置分割线样式
@property(nonatomic) UITableViewCellSeparatorStyle separatorStyle;
04 设置分割线颜色
@property(nonatomic,retain) UIColor *separatorColor;
05 设置tableView的头部视图和底部视图,其宽度默认和tableveiw一样宽
tableview.tableHeaderView = [UIButton buttonWithType:UIButtonTypeContactAdd];
tableview.tableFooterView = [[UISwitch alloc] init];
06 设置是否隐藏垂直的滚动条
self.tableView.showsVerticalScrollIndicator = NO;
07 设置cell是否能被选中
self.tableView.allowsSelection = NO;
08.让tableveiw滚动到某一行
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
4 UITableViewCell的相关属性和方法设置每行的视图和方法
01 每个cell的辅助控件
@property (nonatomic) UITableViewCellAccessoryType accessoryType; 每一行最右边的控件,默认不显示
@property (nonatomic, retain) UIView *accessoryView;
02 cell的背景视图,以及背景颜色。通过backgroundColor 和 backgroundView都可以设置cell的背景,但是backgroundView 的优先级比 backgroundColor的高
@property (nonatomic, retain) UIView *backgroundView;
@property (nonatomic, retain) UIView *selectedBackgroundView; 设置选中状态的背景
03 cell的显示内容,默认是保存再contentView中
@property (nonatomic, readonly, retain) UIView *contentView; cell显示的view,cell默认的三个view,都在contentView中
@property (nonatomic, readonly, retain) UIImageView *imageView NS_AVAILABLE_IOS(3_0); // default is nil. image view will be created if necessary.
@property (nonatomic, readonly, retain) UILabel *textLabel NS_AVAILABLE_IOS(3_0); // default is nil. label will be created if necessary
@property (nonatomic, readonly, retain) UILabel *detailTextLabel
5 cell优化
01、当一个cell出现在屏幕上,系统才会调用cell的生成方法
static NSString *identifier = @"hero"; // 定义变量保存重用标记的值
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; // 1.先去缓存池中查找是否有满足条件的Cell
if (cell == nil) { // 2.如果缓存池中没有符合条件的cell,就自己创建一个Cell
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier]; // 3.创建Cell, 并且设置一个唯一的标记
}
02.ios7已经实现了自动优化,先register一个cell的class或者一个nib文件,那系统自动优化生成该cell
1.registerClass:forCellReuseIdentifier:
2.dequeueReusableCellWithIdentifier:forIndexPath: