Skip to content

过滤列表视图

我们可以自定义列表视图,让它显示所有的地标或者只显示用户收藏的。为此,我们需要给 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,列表将会只显示被收藏的地标。

过滤列表视图 has loaded