外观风格
过滤列表视图
我们可以自定义列表视图,让它显示所有的地标或者只显示用户收藏的。为此,我们需要给 LandmarkList
类型添加一些 state
。
state
是一个或一组值,它可以随时间变化,并且会影响视图的行为、内容或布局。我们用具有 @State
特征的属性将 state
添加到视图中。

第 1 步
在项目导航器中选择 LandmarkList.swift
文件,并将预览还原为只显示列表。

第 2 步
添加一个名为 showFavoritesOnly
的 @State
属性,设置初始值为 false
。
因为使用
@State
属性来保存一个视图及其子视图的特定信息,所以总是将变量创建为私有类型。
第 3 步
点击 Resume
按钮来刷新画布。
注意
当我们对视图的结构进行更改,比如添加或修改属性时,需要手动刷新画布。

第 4 步
通过检查 showFavoritesOnly
属性和每个 landmark.isFavorite
的值来过滤地标列表。

第 5 步
将 List
中的地标列表更换为过滤后的:filteredLandmarks
。
第 6 步
将 showFavoritesOnly
的初始值改为 true
,列表将会只显示被收藏的地标。
