5.1 表格视图基础
在iOS的各种界面元件中,最为常用的恐怕就是表格视图了。作为UIScrollView的子类,这个功能强大的UITableView是UIKit的一部分,它向开发者提供了一种极为灵活的定制方式,使他们可以把很多信息逐条展示在一张“单列表格”中。即便是Core Data新手,你也应该已经熟悉如何创建表格视图并用NSArray填充其内容了吧。假如不是很熟悉该控件,那么可以在本节学到一些表格视图的基础知识。
图5-1 表格视图的基础组件
图5-1演示了表格视图的主要组件,其中每个部分的标题以及表格视图中每个单元格cell(也叫行,row)的位置(location)应该都很明显。而部分索引(section index)则是用小字以垂直方向显示在控件右侧的那段文本[1]。用户可点击或拖曳部分索引,以便快速在表格视图的各个部分之间跳转。
要想给表格视图里填充数据,通常可以创建遵从UITableViewDataSource协议的UITableViewController子类,然后把这个表格视图控制器子类设置给故事板。UITableViewDataSource协议规定了下面这两个必须实现的方法,它们用于向表格中填充数据:
·numberOfRowsInSection方法用于指定表格视图的每个部分所拥有的行数。比方说,可以令这个方法返回[someArray count],这样的话,表格视图的行数就会与数据源数组里面的对象个数相符了。
·cellForRowAtIndexPath用来指定每个单元格中所显示的内容。开发者通常会“深度定制”(heavily customize)这个方法。假如采用内置的单元格风格,那么就可以使用标准的UITableViewCell中的某些默认特性。比方说,在图5-1中,每一行里所显示的文本就是通过textLabel.text特性设置的。若想查阅完整的特性列表,请在Xcode中跳转至UITableViewCell的定义。
采用了UITableViewDataSource协议之后,还可以实现一些可选方法(optional method)。这些方法用于配置表格的编辑(editing)、渲染(rendering)、删除(deleting)、页眉(header)、页脚(footer)、索引(index)等诸多事宜。大部分方法都会在本章后面各节中讲到。
[1] 也叫index list。——译者注