我正在尝试构建一个天气应用程序,其中我使用Alamofire获取天气数据。获取数据的工作正常,但用于显示获取值的UILabel仅显示数据,然后消失。标签不是tableview的一部分,它们位于屏幕顶部的UIView上方。 updateMainUI()是我将标签分配给要在屏幕上显示的相应值的方法。 我已经完成了解决方案,他们建议使用Dispatch async,但我无法解决这个看似简单的问题。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tableView.dataSource = self
tableView.delegate = self
currentWeather = CurrentWeather()
DispatchQueue.main.async {
self.currentWeather.downloadWeatherDetails {
self.updateMainUI()
}
}
}
updateMainUI()方法如下:
func updateMainUI() {
dateLabel.text = currentWeather.date
print(currentWeather.date)
currentTempLabel.text = "\(currentWeather.currentTemp)"
currentWeatherTypeLabel.text = currentWeather.weatherType
locationLabel.text = currentWeather.cityName
currentWeatherImage.image = UIImage(named: currentWeather.weatherType)}
答案 0 :(得分:0)
而不是这个
DispatchQueue.main.async{
self.currentWeather.downloadWeatherDetails {
self.updateMainUI()
}
}
试试这个
currentWeather.downloadWeatherDetails{
DispatchQueue.main.async{
self.updateMainUI()
}
}