带有 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 进行单元测试

ObservedObject 不会注意到 ObservableObject Array 的变化

带有 CoreData 的 TextField

ObservableObject 的问题

来自 ObservableObject 的绑定值