在这里,viewDidLoad方法创建了一系列字典。每个字典都包含表中一行的名称和颜色信息。某一行中的名称在字典的Name键下,颜色在Color键下。我们把所有的字典放到了同一个数组里,这就是此表的数据。
让我们着重看一下tableView:cellForRowWithIndexPath:,此方法中真正添加了新内容。代码的前两行像前面介绍过的一样,先创建一个标识符,然后,如果表提供了出列的表视图单元,则要求表将该单元退出队列。
如果表没有任何可以重用的单元,就必须创建一个新的单元。创建新单元时,还需要创建和添加将要用到的子视图,以实现每单元两行的表。让我们更仔细地研究一下代码。首先,创建一个单元,其实这跟前面一样,除非不使用表视图进行计算,而是手动指定单元的大小。
接下来需要创建4个UILabel,并把它们添加到表视图单元。表视图单元已经有了一个名为contentView的UIView子视图,用于对它的所有子视图进行分组,就像第4章中我们对UIView中的两个开关进行分组一样。因此,我们不用把标签作为子视图直接添加到表视图单元,而是添加到contentView。
稍后,我们将使用该标记从单元中检索正确的标签。
创建新单元之后,使用传入的indexPath参数确定表正在请求单元的哪一行,然后使用该行的值为请求的行获取正确的字典。记住,该字典有两个键/值对,一个是名称,一个是颜色。