0

すべてのアプリケーションでほぼこれを実行しましたが、navigationController に 3 つのビューがスタックされており、3 番目のビューから最初のビューにジャンプする必要があります。私が理解しているように、これはviewWillDisappearのみで行うことができます。しかし、この「ジャンプ」を試みると、例外/エラーの原因となるナビゲーション ボタンを備えた 2 番目のビューから、navigationController パネルが取得されます。

PS leftBarButtonitem を backBarButtonItem のようにするようにアドバイスしないでください。難しすぎて、適切な画像がどこにあるのかわかりません。

4

2 に答える 2

0

私の知る限り、独自の を提供する以外に選択肢はありませんUIBarButtonItemUINavigationControllerデフォルトでは、どのように機能するかを中断することは許可されていません。つまり、戻るボタンの動作をオーバーライドすることはできません。カスタム バー ボタン アイテムを提供し、それをナビゲーション アイテムの左バー ボタン アイテムとして設定する必要があります。

(ちなみに、あなたが探している動作の種類は、不十分なナビゲーション パターンを示している可能性があります。戻るボタンは、ほとんどの場合、ナビゲーション階層から順番に戻る必要があります。)

于 2011-09-14T07:22:00.847 に答える
0

ナビゲーションの順序で、ビューが top -> 3 -> 2 -> 1 のように積み上げられているとしましょう。この位置にいるときは、以下のように backButton が押されたときに doublePop することを示すフラグをアプリケーション デリゲートに設定できます (3 番目のビューが前述の順序で表示されるたびにこれを行っています)。

MyApplicationDelegate * del = [[UIApplication sharedApplication]delegate];
del.doublePopEnabled = YES;
[del release];

ビュー 2 で:

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];
         MyApplicationDelegate * del = [[UIApplication sharedApplication]delegate];
         if(del.doublePopEnabled){
           //Asssuming you have a reference to your navigationController in your view 2
           del.doublePopEnabled = NO;
           [del.release]
           //Use animated as no if you don't want user to see doublePopping.
           self.navigationController popViewControllerAnimated:NO];

          }
 }

それが役に立てば幸い。

于 2011-09-14T08:51:57.580 に答える