it-swarm.com.ru

Встраивание UIViewController в NavigationController с использованием сегментов

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

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

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

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

Но как мне сделать то же самое, но с помощью Segues?

Обновление


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

При использовании модального 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
    }
}
17
hatunike

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

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

26
vacawama

Просто для более детального просмотра Xcode.

 enter image description here

0
Harjot Singh