0

現在の iPhone アプリの「ロード」機能を作成しています。

実際に私がやりたいことは、ユーザーを中断したところに戻すことです。UIViewControllerそのためには、以前に登場したすべての を再作成したいと考えています。

私の問題は、UIViewController単に呼び出すと s が表示されないことです[[self navigationController] pushViewController:newController animated:YES];

ボタンに触れた後など、イベントハンドラーとして呼び出された場合、同じコードが正常に機能します。しかし、偶数を使用せずに同じことを行うと (例: in viewDidLoad)、新しいビュー コントローラーのloadViewメソッドは呼び出されません。

私の実際のコード(いくつかの疑似要素を含む):

- (void)viewDidLoad {
    [super viewDidLoad];
    if (loading)
        [self onSomeEvent];
}

- (void)onSomeEvent {
    UIViewController *newController = //init....;
    [[self navigationController] pushViewController:newController animated:YES];
    [newController release];
}

viewDidLoadはそのような呼び出しを行うのに適切な場所ではないと思いますが、それでは何ですか?

4

1 に答える 1

0

「負荷」機能をコントローラー全体に分散させることが、それを達成するための最良の方法であるかどうかはわかりません。

アプリケーションの init のapplicationDidFinishLauching一部に配置したいと思います。次に、以前の状態を復元する集中化された場所があります(IMHOの処理が簡単です)。

次のような、より高度な復元機能を実装するとします。

  • 以前の状態を復元していることをユーザーに示すアクティビティ インジケーターを含むスプラッシュ UIView を表示する
  • ナビゲーションコントローラーでコントローラーのスタックを復元します
  • しぶきを取り除く

このすべてのコードを applicationDidFinishLauching に含める方が簡単です。すべてが 1 点で管理されます。

さらに、古い状態をナビゲーション コントローラーに復元するときは、トランジションの使用を避けて、コントローラーを押すanimated:NO代わりに使用できます。YESトランジションを達成するために必要な時間を削除すると、あなたの観点から処理が容易になり、復元時間が短縮される可能性があります。

于 2010-03-09T10:06:34.477 に答える