Swift でアプリを開発している際、HTTP 通信が完了した後など、メインスレッド以外で UI を更新したいという状況になったため、その方法についてまとめ。
本来はメインスレッド以外での UI の更新は非推奨なので、場合によっては挙動が変になることがあるとのこと。
なので、どうしても!という時以外は、メインスレッドで行うようにしましょう。
今回参考にさせていただいた記事はこちらから。
swift – swiftでHTTP通信をした後にUILabelのtextを変更する時に時間がかかる – スタック・オーバーフロー
https://ja.stackoverflow.com/questions/7839/swiftでHTTP通信をした後にUILabelのtextを変更する時に時間がかかる
実装方法は簡単で、UI の更新処理を下記の記述で囲むだけです。
OperationQueue.main.addOperation({ // UI の更新処理を記述する textLabel.text = "変更後の文字列" })
私の場合は 3行目のように、この処理の中で UILabel
の更新処理を行なっています。
追加する内容としては以上です。
あとは、実際にアプリを実行してみたところ、問題なく UILabel
の内容が書き換わることが確認できました!
以上、Swift でメインスレッド以外の場所で UI を変更する方法でした。
ご参考になれば幸いです。