-2

iPad アプリで、Web サービスに接続しています。それに接続している間、進行状況アクティビティ インジケーターと対応するメッセージをユーザーにラベルで表示しています (ラベルはサブビューにあり、サブビューを現在のビューに追加しています)。

このコード行 (ビューにサブビューを追加するメソッドを呼び出す) の後で、Web サービスを呼び出すメソッドを呼び出しています。ただし、Web サービス呼び出しが最初に実行され、次にユーザー情報サブビューのみが表示されます。

実行が次のコード行に続いている間でも、アラート ビューを「表示し続けたい」と言う方法はありますか?

// Calling method to add info/alert subview to current view [self displayUserMessage]; 
// Connect to Web Service [self connectToWebService];
4

2 に答える 2

2

あなたの質問を完全に理解しているかどうかはわかりません。また、説明の後にコードを提供すると、はるかに理解しやすくなります...とにかく、Webサービスに接続し、接続中に情報を表示していることを理解していますか?

ユーザー インターフェイスをハングさせたくない場合は、別のスレッドで webService 接続を送信する必要があることに注意してください。これにより、メイン スレッドを解放したままにできます。これは、GCD を使用して行うことができます。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    [self connectWithWebService];
});

次に、Web サービスのアーキテクチャに応じて、デリゲートまたは完了ブロックを使用して、ユーザーにいくつかのメッセージ (情報/アラート) を表示できます。その場合、UI に関連するものはすべてメイン スレッドで実行する必要があることに注意してください。前に言ったように、アーキテクチャに応じて、次のようにする必要があります

dispatch_async(dispatch_get_main_queue(), ^{
    // Show UI Changes
});

webService メソッドがバックグラウンドで実行されている間、UI は適切に更新されるはずです。

于 2013-04-19T17:45:01.433 に答える
0

NSURLConnection非同期接続が必要な場合は、sendAsynchronousRequest:queue:completionHandler:..

アラートを呼び出す前にアラートを表示し、完了ハンドラーでそれを閉じることができます。

于 2013-04-19T17:49:44.093 に答える