19

通常(ほとんどの場合)プッシュセグエを使用してアクセスされるviewControllerがあります。この viewController は UINavigationController に埋め込む必要があります。したがって、通常、これは問題ありません。プッシュ セグエは viewController のプッシュを管理するため、viewController には UINavigationController があります。

私の問題は、いくつかのケースでは、モーダル セグエを使用して、これとまったく同じ viewController を提示したいということです。これを行うと、viewController は navigationController に埋め込まれません。セグエを使用してこれを行う方法はありますか?

これは、UINavigationController を作成し、rootView を viewController として設定し、それをモーダルに表示することにより、セグエなしで純粋にコードで実行できることを知っています。これは、次のようなコードを使用して実行できます。

MyViewController *viewController = [[MyViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self presentModalViewController:navController animated:YES];

しかし、セグエを使用してこれと同じことを行うにはどうすればよいですか?

アップデート


さらに明確にするために、prepareForSegue メソッドで受け入れられた回答をどのように使用したかを補足するコードを次に示します。

モーダルセグエを使用する場合

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Modal to MyVC"])
    {
        UINavigationController *nav = [segue destinationViewController];
        MyViewController *vc = [nav topViewController];
        //setup vc
    }
}

プッシュセグエを使用する場合

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Push to MyVC"])
    {
        MyViewController *vc = [segue destinationViewController];
        //setup vc
    }
}
4

1 に答える 1