列表视图API概览
列表视图的编程接口包括若干UIKit类,两个正式协议以及一个添加至Foundation框架类的范畴。
列表视图
列表视图本身是UITableView
类的实例对象。可以使用其方法来配置列表的外观——例如,指定默认的行高或经一个子视图作为列表的题头。其他方法让读者可以访问当前被选中的行以及特定的行或者单元格。可以调用UITableView的其他方法来管理对于行的选择,滚动列表,插入或者删除行或节。
UITableView继承自UIScrollView
类,其定义了在内容尺寸大于视图窗口尺寸时的视图滚动行为。UITableView从新定义父类的滚动行为,只允许垂直滚动发生。
列表视图控制器
UITableViewController
类管理一个列表视图,并含有诸多相关对标准列表行为的支持,如何选择管理,行编辑,列表配置,等等。这些额外的支持是为了最小化读者创建和初始化列表界面所需的代码量。不要直接使用这个类,相反应该创建其子类,添加自定义行为。
数据源和代理
UITableView
对象必须使用代理和数据源。根据MVC设置模式,数据源在应用的数据模型(即模型对象)和列表视图之间扮演中间者的角色。代理,从另一方面说,管理列表视图的外观和行为。数据源和代理通常(但不是必须)是同一个对象,这个对象一般都是UITableViewController
类的子类的实例对象。(详见利用列表视图导航数据层级结构获得更多信息。)
数据源遵守UITableViewDataSource
协议。UITableViewDataSource
协议有两个必要方法。tableView:numberOfRowsInSecton:
方法告诉列表视图在每节中需要显示多少行,tableView:cellForRowAtIndexPath:
方法提供每行所需显示的单元格。可选方法可以让数据源配置多节,提供题头或注脚,支持添加,移除或排序等功能。
代理遵守UITableViewDelegate
协议。这个协议没有必要方法。它声明的方法能够让代理修改列表视图的外观,管理行的选中,支持附件视图,以及支持对列表中的个别行进行修改。
应用可以利用UILocalizedIndexedCollation
类来帮助数据源为索引列表组织数据,以及当用户点击索引时显示合适的节。UILocalizedIndexedCollation
还会定位节的标题。
对NSIndexpath类的扩展
许多列表视图方法使用索引路径作(index path
)为菜蔬或返回值。一个索引路径定义了嵌套数组中某个节点的路径,在Fondation框架中用NSIndexPath
对向来代表。UIKit为NSIndexPath
声明了一个范畴,包含了返回键路径,在节中定位行以及利用行索引和节索引构建NSIndexPath
对象的方法。更多信息,详见NSIndexPath UIKit Additions。
单元格
正如在数据源和代理中所提到的,数据源必须为列表显示的每个可见行提供单元格对象。这些单元格对象必须继承自UITableViewCell
类。这个类包括一些方法,可以管理单元格的选中和编辑,管理附件视图,以及配置单元格。可以直接初始化UITableViewCell
类所定义的标准单元格,给这些单元格赋予由一至两个文本,或者图像和文本组成的内容(某些风格)。如果不想使用标准风格,也可以将自定义的视图作为子视图加入到表环单元格的contentView
属性当中。当然也可以创建UITableViewCell
类的子类,单元格的外观和行为。这些方法将在窥探单元格中讨论。