3

iOs では、ナビゲーション コントローラーでナビゲート (プッシュ) し、viewDidLoad でリクエストを起動します。このリクエストには時間がかかる可能性があります。リクエストを待ちたくない場合は、ユーザーが元に戻れるようにしてください。

問題は、ナビゲーション バーに追加された [戻る] ボタンが、リクエストが完了するまでブロックされているように見えることです。ボタンはユーザーの操作を記憶し、リクエストが完了すると自動的に戻ります。

リクエストにはレスポンス用のデリゲート メソッドがあり、アプリがそのメソッドに入ると、ボタンが起動して戻ります。

リクエスト中にタッチすると、ボタンにタッチ/クリック効果が表示されず、リクエストの最後にも表示されません。最後まで待つと、ボタンはタッチ/クリックされたボタンに対して通常の効果をもたらしました。

4

2 に答える 2

0

そのためには、このようなボタンプロパティを有効にすることができます。

 [button setEnable:Yes];
 [button setEnable:Yes];

これも使う

 [button setuserintractionEnable:no];
于 2012-05-03T09:43:49.123 に答える
0

バックグラウンドスレッドでリクエストを次のように呼び出します

    [self performSelectorInBackground:@selector(startRequest) withObject:nil];

コアデータについても常にこれを覚えておいてください。これは、UI が解放され、リクエストがバックグラウンド スレッドで引き続き機能し、[戻る] ボタンでリクエスト キャンセルが実装されることです。

objを次のように初期化します

Obj *obj = [[Obj alloc] initWithDelegate:self selector:@selector(requestFinished)]; [self performSelectorInBackground:@selector(startRequest:) withObject:obj]; obj には属性 SEL セレクターと id デリゲートがあります。

リクエスト終了時

([obj.delegate RespondsToSelector:obj.selctor]) { [obj.delegate performSelector:obj.selector]; かどうかを確認します。}

さらに仕様が必要な場合はお知らせください

于 2012-05-03T09:48:35.920 に答える