美文网首页
iOS 之UITableView初识

iOS 之UITableView初识

作者: CarsonChen | 来源:发表于2016-03-15 21:41 被阅读153次

一. UITableView的概念

UITableView是继承于UIScrollView,可以滚动.UITableView的每一条数据叫做一个Cell,是UITableViewCell的一个对象,继承于UIView.UITableView可以分区显示,每一个分区为一个section,每一行称为row,编号都从0开始.系统提供了一个专门的类来整合section和row,叫做NSIndexPath.

二. UITableView的基本使用

UITableView有自己的初始化方法- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style 使用该方法初始化UITableView的对象.UITableViewStyle类型是一个枚举类型,有两个枚举值UITableViewStylePlain,和UITableViewStyleGrouped

UITableView的相关属性:

rowHeight(行高) separatorStyle(分割线样式) separatorColor(分割线颜色) 

tableHeaderView(UITableView的置顶视图) tableFooterView(UITableView的置底视图)

separatorInset(设置分割线与tableView左右的间距,类型为UIEdgeInsets类型)

三. UITableView显示数据

UITableView中有两个重要的属性:

1. delegateSource(显示数据相关的代理) <UITableViewDataSource>

UITableView的DataSource是负责给UITableView对象提供数据的代理,遵循UITableViewDataSource协议.协议中有两个必须实现的方法.

UITableView每个分区的行数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

每一行要显示一个cell

- (UITableViewCell *)tabView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

使用cell对象的时候从复用池中获取一个cell的对象,如果获取不到,则新创建一个cell

使用tabView的实例方法dequeueReusableCellWithIdentifier可以找到复用池中的cell对象.

优点优化内存管理.

2. delegate (视图操作相关代理) <UITableDelegate>

UITableView的每一个单元格是UITableViewCell类的对象.,继承于UIView

UITableViewCell默认提供了3个视图属性.

imageView (图片视图) textLabel(标题视图) detailTextLabel(副标题视图)

四. UITableViewCell的重用机制

UITableViewCell的一个对象划出屏幕的时候,这个cell对象就会被系统自动放到相应的重用池中,当UITableView的对象需要一个cell的时候,会先去重用池中获取一个cell,如果没有则新建一个cell,取到cell后进行赋值操作.

五. UITableView和数组的结合使用

设置分区要显示的行数为数组的元素个数,将数据源保存在数组中,则cell需要的数据数为数据源的下标.

六. UITableView的常用协议方法

UITableViewDataSource

- (NSInteger)numberOfSectionInTableView:(UITableView *)tableView;(UITableView的分区个数)

- (NSArray*)sectionIndexTitlesForTableView:(UITableView *)tableView; (右侧索引)

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;(分区顶部标题)

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section; (分区底部标题)

UITableViewDelegate

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; (每一行的高度)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; (每一个分区顶部的高度)

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; (自定义分区顶部视图)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; (cell的点击方法,告诉delegate点击了哪个cell)

相关文章

网友评论

      本文标题:iOS 之UITableView初识

      本文链接:https://www.haomeiwen.com/subject/inlqlttx.html