初识

在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳。她有两种样式:UITableViewStylePlain和UITableViewStyleGrouped,前者其实就是android中的ListView或者RecyclerView,而后者样式在android中是需要通过xml创建布局的,总的说来这玩意功能比较全。

使用

1、设置数据源:要用UITableVIew显示数据,就要给她设置一个数据源,UITableView会向数据源查询一共有多少行数据以及每一行显示什么数据等,没有设置数据源的UITableView只是个空壳,凡是遵守UITableViewDataSource协议的OC对象,都可以是UITableView的数据源。

2、显示数据的过程:

//调用数据源的下面方法得知一共有多少组数据

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

//调用数据源的下面方法得知每一组有多少行数据

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

//调用数据源的下面方法得知每一行显示什么内容

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

3、Cell的重用原理:当滚动列表时,部分UITableViewCell会移出窗口,UITableView会将窗口外的UITableViewCell放入一个对象池中,等待重用。当UITableView要求dataSource返回UITableViewCell时,dataSource会先查看这个对象池,如果池中有未使用的UITableViewCell,dataSource会用新的数据配置这个UITableViewCell,然后返回给UITableView,重新显示到窗口中,从而避免创建新对象。

4、还有一个非常重要的问题:有时候需要自定义UITableViewCell(用一个子类继承UITableViewCell),而且每一行用的不一定是同一种UITableViewCell,所以一个UITableView可能拥有不同类型的UITableViewCell,对象池中也会有很多不同类型的UITableViewCell,那么UITableView在重用UITableViewCell时可能会得到错误类型的UITableViewCell。解决方案:UITableViewCell有个NSString *reuseIdentifier属性,可以在初始化UITableViewCell的时候传入一个特定的字符串标识来设置reuseIdentifier(一般用UITableViewCell的类名)。当UITableView要求dataSource返回UITableViewCell时,先通过一个字符串标识到对象池中查找对应类型的UITableViewCell对象,如果有,就重用,如果没有,就传入这个字符串标识来初始化一个UITableViewCell对象。

Cell的重用代码:

-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{//1.定义一个cell的标识staticNSString*ID=@”czcell";//2.从缓存池中取出cellUITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:ID];//3.如果缓存池中没有cellif(cell==nil){cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:ID];}//4.设置cell的属性...returncell;}



更多相关文章

  1. 活用Android线程间通信的Message机制
  2. Android(安卓)Activity堆栈信息
  3. OkHttpClient实例化解析
  4. Android(安卓)SQLiteOpenHelper的使用
  5. 【android】HandlerThread的使用及源码剖析
  6. Android之MVVM架构指南(五):ViewModel
  7. Android之Context理解
  8. Webkit for Android分析
  9. JNI 引用问题梳理

随机推荐

  1. android 读写私有文件
  2. android闹钟开发(四)--音乐播放与音量调节
  3. Android帧缓冲区(Frame Buffer)硬件抽象层(H
  4. Android打电话的流程
  5. android小记之FTP文件上传
  6. android事件4-onTouchEvent, onClick及on
  7. Qt for android构建Android(安卓)Apk时出
  8. android viewFlipper 使用
  9. Android(安卓)Studio之Gradle基础
  10. 向sdcard中添加文件出错