2012-01-30 4 views
0

ナビゲーションコントローラーで小さな問題が発生しました。私は2つの '分岐'を持つナビゲーションコントローラをセットアップしました。 aviewController1> aViewController2> aviewController3のように、もう1つの分岐はbiewController1> bviewController2です。今私がしたいのは、他のブランチの現在の位置から一番下のビュー(最初のビュー)(たとえば、viewController3> bviewController1など)を選択するオプションです。明らかに単純な[self.navigationController addSubview:someview.view]は、私がそのビューに来るだけで、navコントローラの現在のスタックカウントを保持するので、仕事をしません。これを行う方法についていくつかアイデアを得ることができますか?UINavigationControllerの異なる「レイヤー」間のジャンプ

答えて

2

を行うことによって、それをスピードアップすることができます。すべてのpopViewController:animated:アニメーションをNOに設定した場合は、シームレスにする必要があります。

また、ナビゲーションコントローラには、ビューコントローラの別のセットに対してスタック全体をスワップアウトできるsetViewControllers:animated:メソッドがあります。これを使用して、既存のView Controllerスタックを変更可能な配列にコピーし、不要なものを削除し、追加したものを追加して、古いスタックを新しいスタックに一度に置き換えることができます。

+0

[self.navigationController popViewControllerAnimated:NO]を呼び出してみました。お互いに何度も繰り返しますが、最初のスタックgetだけがポップされます。これはあなたがそれを正しく意味した方法ですか? –

+0

View Controllerの1つから呼び出すのですか?そうであれば、現在呼び出されているビューコントローラをポップアップすると、viewControllerがナビゲーションスタックに存在しないため、self.navigationControllerはnilになるため、複数回は機能しません。 navigationControllerへの参照を取得して変数に格納する必要があります。次に、複数回ポップすることができます。例えばUINavigationController * controller = self.navigationController; [コントローラのpopViewControllerAnimated:NO]; [コントローラのpopViewControllerAnimated:NO];等... –

1

ナビゲーションコントローラは基本的にスタックなので、安全な方法はa3をポップし、a2をポップし、a1をポップしてからb1を押します。

分岐がルートコントローラであるならば、あなたはあなただけのポップを複数回呼び出すことにより、複数のスタックをポップすることができますpoptoルートコントローラ

+0

愚かな質問ですが、複数のスタックを同時にポップするにはどうすればよいですか? –

+0

あなたがルートコントローラに行っていない限り、私は一度に1つずつオフにします。 –

+0

これは動作するはずですので、私はルートコントローラに行く必要はありません。しかし何とか私は何度もポップを呼び出すと、スタックを1つポップするように見えます。私はこれをUIActionSheetボタンから呼び出すのですが、それは問題の原因になりますか? –

関連する問題