Skip to content
目录

动态化列表

相比于给 List 指定单个元素,我们还可以直接从集合中生成行视图。

通过传递一个数据集合和一个给每个元素提供视图的闭包来让 List 显示集合的元素。 List 通过传递的闭包来把每个集合中的元素转换成子视图。

第 1 步

删除两个静态地标行视图,而把模型数据的 landmarks 数组传递给 List 初始化方法。

List 使用 identifiable 的数据,我们可以使用以下两个方法之一来让数据变成 identifiable

  1. 使用 key path属性来唯一标识每个元素;
  2. 让数据类型遵循 Identifiable 协议。

第 2 步

通过从闭包中返回一个 LandmarkRow 来完成动态生成的 List

这会给 landmarkData 数组中的每一个元素创建一个 LandmarkRow

接下来,你将通过为地标类型添加 Identifiable 协议来简化列表代码。

第 3 步

打开 Landmark.swift 文件并声明符合 Identifiable 协议。

Landmark 类型声明了 Identifiable 协议所需要的 id 属性后;你只需要在读取数据时添加一个属性来解码。

第 4 步

打开 LandmarkList.swift 并删除 id 参数。

从现在开始,就可以直接使用 Landmark 元素的集合了。

动态化列表 has loaded