带有 ObservableObject 的 SwiftUI - 包含 NavigationLink 的列表以在滚动时下载它的详细信息不出现
Posted
技术标签:
【中文标题】带有 ObservableObject 的 SwiftUI - 包含 NavigationLink 的列表以在滚动时下载它的详细信息不出现【英文标题】:SwiftUI with ObservableObject - List having NavigationLink to details downloading it on scroll NOT on appear 【发布时间】:2019-09-16 10:22:37 【问题描述】:我有城市列表
struct CityListView: View
@ObservedObject private(set) var citiesViewModel: CitiesViewModel
var body: some View
LoadingView(isShowing: .constant(citiesViewModel.cities?.isEmpty ?? false))
NavigationView
List(self.citiesViewModel.cities ?? []) city in
NavigationLink(destination: DetailView(cityName: city.name,
detailCityModel: DetailCityModel(cityId: city.id)))
Text(city.name)
.navigationBarTitle(Text("Cities"), displayMode: .large)
当我滚动列表时,DetailCityModel 会启动并从 API 下载数据。如何在 DetailView 的外观上下载(或初始化 DetailCityModel),而不是用于显示带有 NAvigationLink 到 DetailView 的项目?
【问题讨论】:
【参考方案1】:您必须在 onAppear() 中启动 API 调用,而不是在 DetailView 的初始化程序中。
【讨论】:
以上是关于带有 ObservableObject 的 SwiftUI - 包含 NavigationLink 的列表以在滚动时下载它的详细信息不出现的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:具有计算属性的 ObservableObject
在 Swift 测试驱动开发中对 @ObservableObject 进行单元测试