質問

私の状況は次のとおりです。データを収集するために同期HTTPリクエストを行っていますが、手の前にナビゲーションバーのタイトルビュー内にロードビューを配置したいと思います。リクエストが終わったら、タイトルビューをNILに戻したいと思います。

[self showLoading];        //Create loading view and place in the titleView of the nav bar.
[self makeHTTPconnection]; //Creates the synchronous request
[self endLoading];         //returns the nav bar titleView back to nil.

リクエストが越えた後、読み込みビューが表示されるため、読み込みビューが機能することはわかっています。

私の問題:この時点で明らかなはずですが、基本的に私は遅らせたいです[self makeHTTPconnection] まで [self showLoading] 完了しました。

時間をありがとう。

役に立ちましたか?

解決

同期アプローチではそれを行うことはできません。あなたが送るとき セルフショーロード メッセージ、メソッド全体が終了するまでUIは更新されないため、他の2つのタスクがすでに終了します(makehttpconnectionエンドロード)。その結果、読み込みビューが表示されません。

この状況の可能な解決策は、同時に動作することです。

[self showLoading];
NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_sendRequest) object:nil];
[queue addOperation:operation];
[operation release];

次に、 * _sendrequest *メソッドを追加する必要があります。

- (void)_sendRequest
{
    [self makeHTTPConnection];
    //[self endLoading];
    [self performSelectorOnMainThread:@selector(endLoading) withObject:nil waitUntilDone:YES];
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top