1

セグエが個々のViewController(7つ)に接続されているナビゲーションコントローラー(ストーリーボードとARCを備えたXCode4)があります。通常、ナビ コントローラーの行をタップすると、正しいシーンに移動します。ただし、セグエを使用してシーン「A」からシーン「C」に移動し、次に「C」から「B」に移動したい場合があります。これは、Nav コントローラーを経由してスタックに配置されていません。

これはどういうわけか可能ですか (シーン「C」からシーン「B」に移動する)?

更新: これは、コントローラーをスタックに配置するコードです。

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];
4

3 に答える 3

3

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

于 2012-04-26T20:17:10.217 に答える
1

UINavigationController's viewControllersスタックは、プロパティに格納されている配列です。insertObject:atIndex:1これを使用して、新しい(可変)配列を作成し、これをに戻すことができますUINavigationController.viewControllers

于 2012-04-26T20:38:22.987 に答える
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];
于 2012-07-14T17:57:42.023 に答える