UITableView与UITableViewControlle
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对象。