質問
iPhone から Web サービスに大量のファイルをアップロードしています。内部にUIActivityIndicatorViewを備えたUIAlertViewを画面上に表示したいと考えています。うまく機能するようになりました。ただし、各ファイルがアップロードされるたびに UIAlertView のタイトルを更新したいと考えています。(「ファイル 1 をアップロード中...」、「ファイル 2 をアップロード中...」など)
UI 実行ループは決して呼び出されないため、同期 Web リクエストを使用してループ内にタイトルを設定することはできないことはわかっています。NSTimer を使用して Web リクエストを発行しようとしましたが、各リクエストの継続時間は予測できないため、うまくいきません。(リクエストが実際に完了する前にメッセージが更新される可能性があります。)
iPhone の帯域幅はかなり限られているため、実際には各ファイルを一度に 1 つずつ同期的にアップロードしたいと考えています。「この同期操作が終了したら、UI を少し更新してから、別の同期操作を実行する」というメカニズムがわかりません。
解決
OK、これを解決するために私がとったアプローチは次のとおりです。
- UIAlertViewを作成する
- 非同期 Web リクエストを開始してアイテムを投稿し、デリゲートを self に設定します
- 接続でDidFinishLoading:メソッドを使用して、投稿する項目が他にあるかどうかを確認します。存在する場合は、タイトルを更新し、別の非同期リクエストを開始します。そうでない場合は、アラートを無視します。
これは、どのリクエストがアップロードされているかを追跡するためにいくつかのクラス変数を維持する必要があることを意味しますが、それは完全に機能し、複雑なスレッド処理などは必要ありません。
他のヒント
これを試しましたか?
alertView.title = @"new title";
[alertView setNeedsDisplay];
所属していません StackOverflow