我正在开发一个气象应用程序,其中每个统计信息都有子视图:CurrentWeather,HourlyForecast和DailyForecast都是单独的视图
,我目前正在为每个视图进行单独的api调用,但是我知道这效率很低,我想知道如何才能对所有功能一次调用func。我曾尝试将功能放在我的应用程序的“主屏幕”上的.onAppear
中,该功能具有所有子视图,但是由于在子视图中访问所需的数据,因此它似乎无法正常工作。>
任何帮助都将不胜感激,因为我还不熟悉SwiftUI
这是我目前正在做的事情的一个版本:
@EnvironmentObject var data: WeatherAPI
VStack {
// Weather Condition and Temp
CurrentWeather().environmentObject(WeatherAPI())
//Hourly Forecast
HourlyModuleView()
//Weekly Forecast
ForecastModuleView().environmentObject(WeatherAPI())
}.onAppear(perform: data.loadData)
答案 0 :(得分:2)
您应该删除环境对象的过度定义,并从HomeScreen
视图中使用一个,因为注入到根视图中的环境对象对于所有子视图都将自动可用,例如
@EnvironmentObject var data: WeatherAPI
...
VStack {
// Weather Condition and Temp
CurrentWeather() // << data injected automatically
//Hourly Forecast
HourlyModuleView() // << data injected automatically
//Weekly Forecast
ForecastModuleView() // << data injected automatically
}.onAppear(perform: data.loadData)