プッシュ セグエをプログラムで呼び出したい場合は、Interface Builder でセグエに「ストーリーボード ID」を指定すると、次のことができます。
[self performSegueWithIdentifier:"pushToMyVC" sender:self];
または、セグエを実行したくない場合は、宛先のView Controllerをインスタンス化してから、そのView Controllerに手動でプッシュできます。あなたがする必要があるのは、宛先ビューコントローラーがInterface Builderで独自の「ストーリーボードID」を持っていることを確認することだけです。その後、次のことができます。
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DestinationController"];
[self.navigationController pushViewController:controller animated:YES];
あなたは「プッシュ」と言った(したがって、pushViewController
上記で使用した)。「モーダルビューコントローラーを提示する」ことを本当に意図している場合、その2行目は次のとおりです。
[self presentViewController:controller animated:YES completion:nil];
ご覧のとおり、新しいシーンにプッシュするために使用する必要はありません。情報を宛先View Controllerに渡したい場合にprepareForSegue
のみ使用します。prepareForSegue
それ以外の場合は必要ありません。
明らかに、ストーリーボードを使用していない場合 (たとえば、NIB を使用している場合)、プロセスはまったく異なります。prepareForSegue
しかし、その環境には適用できないため、NIBを使用していないと思います。ただし、NIB を使用している場合は、次のようになります。
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];