Подтвердить что ты не робот

Вставить UIViewController в NavigationController с помощью segues

У меня есть viewController, который обычно (чаще всего) доступен с помощью push-сегмента. Этот viewController должен быть встроен в UINavigationController. Как правило, это не проблема. Нажимной сегмент управляет нажатием на viewController, и поэтому viewController имеет UINavigationController.

Моя проблема в том, что в нескольких случаях я хотел бы представить этот же самый точный viewController, используя модальный переход. Когда я это делаю, viewController не встроен в navigationController. Есть ли способ сделать это с помощью segues?

Я знаю, что это можно сделать исключительно в коде без segues, создав UINavigationController, установив rootView как viewController, а затем представив это как модально. Это можно сделать с помощью следующего кода:

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

Но как мне сделать то же самое, но использовать Segues?

Update


Для большей ясности, вот какой-то код, чтобы дополнить то, как я использовал принятый ответ в методе prepareForSegue.

При использовании Modal Segue

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

При использовании Push Segue

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

Ответ 1

В вашей раскадровке вы можете встроить ViewController в контроллер навигации, выбрав "Контроллер просмотра", а затем выбрав из меню вверху Editor->Embed In->Navigation Controller. С другого контроллера просмотра вы управляете перетаскиванием на этот контроллер навигации, чтобы настроить modal segue. Вы также можете управлять перетаскиванием на исходный контроллер просмотра, чтобы настроить его для него без контроллера навигации.

Storyboard showing a view controller both embedded in a navigation controller and not