有没有一种方法可以在视图中的多个子视图上调用函数?

时间:2020-08-16 04:01:36

标签: ios swift function swiftui

我正在开发一个气象应用程序,其中每个统计信息都有子视图: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)

1 个答案:

答案 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) 
相关问题