UITableView与UITableViewController

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对象。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,868评论 1 32
  • UITableViewCell控件空间构造 cell的子控件是contentView,contentView的子控...
    CoderZXS阅读 4,044评论 0 1
  • UITableViewCell 父类是UIView UITableView的每一行都是一个UITableViewC...
    翻这个墙阅读 11,666评论 0 1
  • UITableView继承于UIScrollView,可以滚动。 UITableView的每一条数据对应的单元格叫...
    肉肉要次肉阅读 3,610评论 5 4
  • UITableView - 表视图 UITableView是作为IOS中显示数据列表最常用的一个控件,继承UISc...
    寻心_0a46阅读 5,815评论 0 1

友情链接更多精彩内容