本文描述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:
iOS开发 UITableView的方法和属性总结