2012-04-26 9 views
1

私はSegueが個々のViewController(7個)に接続されているナビゲーションコントローラ(XCode4 with Storyboards and ARC)を持っています。通常、私はNav Contollerの行をタップして正しいシーンに移動させます。しかし、シーンAからシーンCにセグを使用して行き、次にNav Controllerを経由してスタックに置かれていない「C」から「B」に移動したい時があります。スタック上にないビューコントローラにポップする方法

これはどういうわけか(シーン「C」からシーン「B」へ)

UPDATE:これはスタックにコントローラを置くためのコードです:

EnterDataViewController *edvc = [[EnterDataViewController alloc]init]; 

NSMutableArray *ma = self.navigationController.viewControllers; 
[ma insertObject:edvc atIndex:1]; 
self.navigationController.viewControllers = ma; 
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex: 1] animated:YES]; 

答えて

3

アニメーションをオフにして、階層の最上位1以下の新しいビューコントローラを挿入します。その後、ポップ。 :)

+0

ワウ!論理的に聞こえる....私はどのようにこれを行うには、ドキュメントやサンプルまたはチュートリアルを見つけるのですか? – SpokaneDude

+1

私は 'UINavigationController'のドキュメントを読んでいます。 –

+0

これはnavスタック上にあるアイテムのみを扱うようです...(http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html)。あなたは同じ場所を見ていましたか? – SpokaneDude

1

スタックは、UINavigationController'sviewControllersプロパティに格納された配列です。これを使用してinsertObject:atIndex:1という新しい(変更可能な)配列を作成し、これをUINavigationController.viewControllersに割り当てます。

+0

NOTE質問質問を更新しました...提案したコードを追加しましたが、常に移動したいシーンではなくナビゲーションコントローラのシーンに戻ります。 – SpokaneDude

+0

ma = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];残りの部分はそのまま残しておきます。 – Mario

+0

[[ma insertObject:edvc atIndex:1];のビルドエラーです。 'NSArray'の表示されない@interfaceはセレクタ 'insertObject:atIndex:'を宣言します – SpokaneDude

0

self.navigationController.viewControllersに新しいコントローラを挿入しても必ずしも正常に動作するとは限りません。したがって、必要なコントローラをアレイからフェッチし、最初から新しい配列を作成してからこの配列を割り当てますナビゲーションコントローラ。

UIViewController *mainScreenController = [[self.navigationController viewControllers]objectAtIndex:0]; 
SecondScreenController *secondScreenController = [[SecondScreenController alloc]init];  
NSMutableArray *controllers = [[NSMutableArray alloc]initWithObjects:mainScreenController, secondScreenController, nil];  
[self.navigationController setViewControllers:controllers animated:YES]; 
関連する問題