Skip to content

处理用户输入

Landmarks app 中,用户可以标记他们喜欢的地点,并在列表中过滤出来。要实现这个功能,我们要先在列表中添加一个开关,这样用户可以只看到他们收藏的内容。另外还会添加一个星形按钮,用户可以点击该按钮来收藏地标。

请先下载本节资源文件,并按照下面的步骤进行。

  • 预计完成时间:20 分钟
  • 初始项目文件:下载

1. 标记用户收藏的地标

首先,通过优化列表来清晰地给用户显示他们的收藏。给每个被收藏地标的 LandmarkRow 添加一颗星。

第 1 步

打开项目,在项目导航器中选择 Landmark.swift 文件。

第 2 步

Landmark 结构体添加一个 isFavorite 属性。

因为 Landmark 符合 Codable 协议,所以你可以通过创建同名属性,来读取 landmarkData.json 文件中对应属性的值

第 3 步

打开 LandmarkRow.swift 文件。

第 4 步

Spacer 后面,新增 if 语句,判断当前地标为用户收藏的地标时,添加一个星形图标。

技巧

在 SwiftUI 代码块中,可以使用 if 语句来控制视图的显示。

第 5 步

因为系统图标是矢量的,所以可以用 foregroundColor(_:) 修饰符来改变其颜色。

只要一个地标的 isFavorite 属性为真,就会显示星形图标。你将在本教程的后面看到如何修改该属性。

处理用户输入 has loaded