2017-10-25 11 views
0

セットアップに関するいくつかの情報を開始するには:3つのビューと3つのViewControllerを持つストーリーボードがあり、それぞれがビューに接続されています。IOS Swift 3 ViewのUILabelsが正しくレンダリングされない

私は、self.performSegue(withIdentifier: "bookingSuccess", sender: nil)のDataTask(http要求)の完了ハンドラからビューを切り替えています。いくつかのデータを渡すために、私はViewModelを宛先コントローラに割り当てる準備関数を使用します。

その後、私はViewDidLoad()関数でいくつかのUIスタッフを用意し、ViewWillAppear()メソッドでラベルに値を割り当てます。

これはうまくいきますが、ビューが切り替わると、UI要素の半分が表示されず、ボタンのテキストも何も表示されません。私が知りませんが、いくつかの状況では(ちょうど数秒待った後のほとんどの時間か、APPを閉じずに再び開くと、これらの要素が突然表示されます) 私は多くのことを試みましたが、何もできません。当初、私はそれが表示されていない理由を任意のアイデアを持っていない私のIOS対象バージョンのいずれかである。ここIOS 10またはIOS 11.0.1/3

は、画面の二つの画像です:。 Directly after switching the View

After waiting about 10 seconds

+0

は必ず' self.performSegue(::「bookingSuccess」、送信者ゼロwithIdentifier)してくださいこれはあなたのバックグラウンドスレッドでUIのものをやっているように聞こえます – Ladislav

+0

こんにちは、私はDispatchQueue.main.sync { self.performSegue(withIdentifier: "bookingSuccess"、送信者:なし) }と試してみました しかし、それdoesn –

+0

は '非同期'ではない '同期' – Ladislav

答えて

1

これは、バックグラウンドスレッドでUI作業を行う際の問題のようです。DataTaskの完了ハンドラからそれはそうバックグラウンドスレッドで次のようになります。 `メインスレッドで呼び出され、

DispatchQueue.main.async { 
    self.performSegue(withIdentifier: "bookingSuccess", sender: nil) 
} 
+1

は 'async'にする必要がありますか? –

+0

はい、修正済み:) – Ladislav

関連する問題