初めて、実際に機能するコードでここに質問を投稿しています! ただし、コードの行数を減らす方法があると思います。教祖が道を示してくれることを願っています。
参照用のストーリーボード ウィンドウは次のとおりです。
私は、containerView を持つ Main ViewController を持っています。ContainerView には独自の Navigation Controller があります。メイン ビュー コントローラーの左側にある各ボタン (B1 ~ B5) は、それぞれのシーン番号にセグエします。つまり、B2 はシーン 2 をスタックにプッシュします。B4 はシーン 4 をスタックにプッシュします。visibleViewContoller がシーン 5 で、ユーザーが B1 を押すと、シーン 1 に到達するまですべての viewController がポップされます。
繰り返しますが、以下のコードは問題なく動作します。B1 と B2 のコードのサイズを縮小したいだけです。
- (IBAction)B1Pressed:(id)sender {
UINavigationController *navController = [self.childViewControllers objectAtIndex:0];
NSMutableArray *VCs = [navController.viewControllers mutableCopy];
UIViewController *visibleViewController = [navController visibleViewController];
if (visibleViewController == [VCs objectAtIndex:0])
{
return;
}
else if (visibleViewController ==[VCs objectAtIndex:1])
{
[navController popViewControllerAnimated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:2])
{
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:3])
{
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:4])
{
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:5])
{
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
}
}
- (IBAction)B2Pressed:(id)sender {
UINavigationController *navController = [self.childViewControllers objectAtIndex:0];
NSMutableArray *VCs = [navController.viewControllers mutableCopy];
UIViewController *visibleViewController = [navController visibleViewController];
if (visibleViewController == [VCs objectAtIndex:0])
{
STLMEatDrinkViewController *stlmEDVC = [self.storyboard instantiateViewControllerWithIdentifier:@"B2"];
[navController pushViewController:stlmEDVC animated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:1])
{
return;
}
else if (visibleViewController ==[VCs objectAtIndex:2])
{
[navController popViewControllerAnimated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:3])
{
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:4])
{
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
}
else if (visibleViewController ==[VCs objectAtIndex:5])
{
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
}
}
ここで、B3Pressed、B4Pressed、および B5Pressed に対して、この同じコードをあと 3 回書くことを想像してください。コードが多すぎると思いますが、これにはもっと良いアプローチがあるとほぼ確信しています。
ありがとうございました。