Alamofireを使用して気象データを取得する天気アプリを作成しようとしています。データの取得は正常に機能していますが、取り出した値を表示するために使用されるUILabelでは、1秒間だけデータが表示され、その後は消えます。ラベルはテーブルビューの一部ではなく、画面上部のUIViewの上に表示されます。 updateMainUI()は、ラベルを対応する値に割り当てて画面に表示するメソッドです。 私は解決策を見つけ、ディスパッチ非同期を使用することを提案していますが、この一見単純な問題は解決できません。次のようにUILabelのコンテンツが1秒間表示されてから消えます。
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)}
を試してみてください'を呼び出し、呼び出された回数とどのデータが設定されているかを確認します毎回ラベル – Fonix