it-swarm.com.de

Betten Sie einen UIViewController mithilfe von Segues in einen NavigationController ein

Ich habe einen viewController, der normalerweise (meistens) mit einem Push-Segment aufgerufen wird. Dieser viewController muss in einen UINavigationController eingebettet sein. Normalerweise ist das also kein Problem. Das Push-Segment verwaltet das Pushing des viewControllers. Daher verfügt der viewController über einen UINavigationController.

Mein Problem ist, dass ich in einigen Fällen denselben exakten viewController mit einem modalen Segment darstellen möchte. Dabei ist der viewController nicht in einen navigationController eingebettet. Gibt es eine Möglichkeit, dies mit Segues zu tun?

Ich weiß, dass dies rein im Code ohne Segmente erfolgen kann, indem ein UINavigationController erstellt wird, der rootView als viewController festgelegt wird und dieser dann modal dargestellt wird. Das kann mit folgendem Code gemacht werden:

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

Aber wie mache ich dasselbe, aber mit Segues?

Aktualisieren


Der Klarheit halber sei hier noch etwas Code hinzugefügt, wie ich die akzeptierte Antwort in der prepareForSegue-Methode verwendet habe.

Bei Verwendung von 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
    }
}

Bei Verwendung von Push Segue

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

In Ihrem Storyboard können Sie einen ViewController in einen Navigationscontroller einbetten, indem Sie den View Controller auswählen und dann aus dem Menü oben Editor->Embed In->Navigation Controller auswählen. Ziehen Sie von einem anderen Ansichtscontroller aus auf diesen Navigationscontroller, um das modal-Segment einzurichten. Sie können auch das Ziehen auf den ursprünglichen View Controller steuern, um Segmente ohne Navigations-Controller einzurichten.

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

26
vacawama

Geben Sie einfach einen detaillierteren Überblick über Xcode.

 enter image description here

0
Harjot Singh