2017-02-07 12 views
0

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)} 
+0

を試してみてください'を呼び出し、呼び出された回数とどのデータが設定されているかを確認します毎回ラベル – Fonix

答えて

0

代わりにこの

DispatchQueue.main.async{ 
    self.currentWeather.downloadWeatherDetails { 
     self.updateMainUI() 
    } 
} 

の) `updateMainUI(内部のブレークポイントを置くこの

currentWeather.downloadWeatherDetails{ 
    DispatchQueue.main.async{ 
     self.updateMainUI() 
    } 
} 
+0

私はこれを使用しましたが、同じ問題はそのままです。 UILabelが実際のデータで1秒間点滅した後、空白になります。 – SeaWarrior404

+0

@Fonixの提案を試しましたか?私は、正しい値が初めて設定された後、ラベルに空白の値が設定されていると思います。 –

関連する問題