iOS初学历程

UITableView与UITableViewControlle

2019-07-31  本文已影响0人  水无月之痕
UITableViewController和UITableView之间的关系

  UITableViewController的指定初始化方法是initWithStyle:。调用initWithStyle:时要传入一个类型为UITableViewStyle的常数,该常数决定了UITableView对象的风格。
 传入tableView:numberOfRowsInSection:方法的section参数起什么作用?UITableView对象可以分段显示数据,每个表格段(section)包含一组独立的行。


UITableViewCell布局 UITableViewCell的视图层次结构 UITableViewCellStyle常量

UITableView对象会将移出窗口的UITableViewCell对象放入UITableViewCell对象池,等待重用。当UITableView对象要求数据源返回某个UITableViewCell对象时,数据源可以先查看对象池。如果有未使用的UITableViewCell对象,就可以用新的数据配置这个UITableViewCell对象,然后将其返回给UITableView对象,从而避免创建新对象。这里还有一个问题:因为有时需要创建UITableViewCell的子类,用于实现特定的外观或特性,所以UITableView对象可能会拥有不同类型的UITableViewCell对象。
如果UITableViewCell对象池中的对象创建自不同的子类,那么UITableView对象就有可能得到错误类型的UITableViewCell对象。鉴于上述原因,必须确保UITableView对象能够得到指定类型的UITableViewCell对象,这样才能确定返回的对象会拥有哪些属性和方法。


重用UITableViewCell对象

每个UITableViewCell对象都有一个类型为NSString的reuseIdentifier属性。当数据源向UITableView对象获取可重用的UITableViewCell对象时,可传入一个字符串并要求UITableView对象返回相应的UITableViewCell对象,UITableViewCell对象的reuseIdentifier属性必须和传入的字符串相同。按照约定,应该将UITableViewCell或者UITableViewCell子类的类名用作reuseIdentifier。
  重用UITableViewCell对象,意味着UITableView对象只需要创建少量的UITableViewCell对象,从而减少内存的占用量,提升用户界面的流畅性。

//直接创建UITableViewCell对象,不重用
UITableViewCell*cell=[[UITableViewCellalloc] initWithStyle: UITableViewCellStyleDefault 
reuseIdentifier:@"UITableViewCell"];  

//创建或重用UITableViewCell对象  
UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier: @"UITableViewCell" 
 forIndexPath:indexPath];

之前的代码都是手动创建UITableViewCell对象的。为了重用UITableViewCell对象,必须将创建的过程交由系统管理——需要告诉表视图,如果对象池中没有UITableViewCell对象,应该初始化哪种类型UITableViewCell对象。

上一篇下一篇

猜你喜欢

热点阅读