スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]addSubviewはメインスレッドで行う必要がある

今回は、UIViewをパーツ化した際に生成したスレッドからaddSubviewしたときに発生しました。

今回の件でかなりくらちさん(@Awaresoft)にかなりお世話になりました。
twitter上で情報提供頂いたので、そのまま載せておきます。

NSThreadのdetachNewThreadSelectorを利用したスレッド内で、パーツ化したアクティビティインジケータをログイン処理時に貼り付け(addSubview)、終了時に取り外す(removeFromSuperview)ということをしていたのですがこの場合ではパーツ化したアクティビティインジケータが上手く表示されませんでした。(なぜかUILabelだけ)

これをとりやめ、初めからaddSubviewしておきhiddenの値を切り替えることで対応しました。

このビューをaddSubviewする行為(ユーザインタフェースの操作)については、メインスレッドで行うようにAppleからガイダンスがでていました。
気になる方は参考URLの "About Threaded Programming" から "About Threaded Programming" の項の最初の一文をご参照ください。
以下抜粋です。

Threads and Your User Interface
If your application has a graphical user interface, it is recommended that you receive user-related events and initiate interface updates from your application’s main thread.
...



参考URL:About Threaded Programming
参考URL:再利用可能なUIViewのパーツをInterfaceBuilderで作る方法
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。