0

閉じるときにそのビューが完全に作成されているかどうかわからない場合、ビューをエレガントに閉じるにはどうすればよいですか?

これが私のジレンマです。ビューには、サーバーから要求されたデータが表示されています。したがって、リクエストが失敗したかどうかにかかわらず、サーバーリクエストを非同期に送信viewDidLoadし、2 つのオブザーバーで待機します。

「却下」ビューには、終了セグエ(ストーリーボード)を使用します。

したがって、次の 2 つのシナリオがあります。

  • が呼び出された後にサーバー側のエラーが発生しましviewDidAppearた。performSegueその後、またはに電話することができself.navigationController.pop...、すべてがうまくいきます。
  • viewDidAppearが呼び出される前にサーバー側のエラーが発生しました。この場合、ユーザーを前のビューに移動するにはどうすればよいですか?

今のところ、サーバーリクエストを送信しましviewDidAppearたが、ユーザーが空のビューをかなりの時間見ているため、非常にクールではありません:(

これにどう対処しますか?

4

3 に答える 3

1

UPDATED フラグを立てます。

@property (nonatomic, assign) BOOL requestFailedOrViewDidAppear;

viewDidLoad の開始時または init メソッドで NO に設定します。次に、サーバー側のエラー ハンドラで次のようにします。

if (requestFailedOrViewDidAppear) {
    //return to previous view
}
else {
    requestFailedOrViewDidAppear = YES;
}

同じコードを viewDidAppear にも入れます。

これは、実装の点でよりエレガントです。ただし、UI/UX の点で洗練されたものにしたい場合は、「//前のビューに戻る」を、エラーを説明する UIAlertView を作成して表示するコードに置き換えます。その後、ユーザーがそのアラート ビューを閉じると、前のビューに戻ることができます。

于 2013-09-02T09:26:55.020 に答える
0

提示されているビューに何らかの情報が表示されることをユーザーが期待すると仮定すると、 の前にリクエストが失敗した場合、viewDidAppearビューが表示されるまで待機し、エラーを表示して、ビューを閉じます。それ以外の場合、 の後にリクエストが失敗した場合viewDidAppearは、エラーを表示してリクエスト監視メソッドのビューを閉じます。それが、この問題に対処する私の方法です。

于 2013-09-02T09:41:44.600 に答える
0

と呼ばれるフラグあるintことが判明しました。2 の場合は、ビューが表示されたことを意味します。UIViewController_appearState

于 2013-09-02T20:37:41.593 に答える