Ich wollte nur etwas zu dem hinzufügen, was @Scott gesagt hat. Seine Antwort ist definitiv die einfachste und am meisten akzeptierte Methode, dies jetzt mit Storyboards, iOS 7 und 8 zu tun ... (und bald auch mit 9).
Das Hinzufügen und Einbetten eines View Controllers zum Storyboard und das Einbetten wie von @Scott beschrieben ist der richtige Weg.
Fügen Sie dann einfach den Segue hinzu, indem Sie die Steuerung vom Quellansichts-Controller zum Ziel ziehen (das, das Sie modal anzeigen möchten), und wählen Sie "Modal präsentieren", wenn die kleine Ansicht mit den Auswahlmöglichkeiten für den Segue-Typ angezeigt wird. Wahrscheinlich auch gut, um ihm einen Namen zu geben (im folgenden Beispiel verwende ich "presentMyModalViewController").
Eine Sache, die ich brauchte, die fehlte, ist @ Scotts Fall, wenn Sie tatsächlich einige Daten an diesen modal dargestellten Ansichts-Controller weitergeben möchten, der in den Navigations-Controller eingebettet ist.
Wenn Sie den segue.destinationViewController greifen, handelt es sich um einen UINavigationController, nicht um den Controller, den Sie in den UINavigationController eingebettet haben.
Um zum eingebetteten Ansichts-Controller im Navigations-Controller zu gelangen, habe ich Folgendes getan:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"presentMyModalViewController"]) {
// This could be collapsed, but it's a little easier to see
// what's going on written out this way.
// First get the destination view controller, which will be a UINavigationController
UINavigationController *nvc = (UINavigationController *)segue.destinationViewController;
// To get the view controller we're interested in, grab the navigation controller's "topViewController" property
MyModalViewController *vc = (EmailReceiptViewController *)[nvc topViewController];
// Now that we have the reference to our view controller, we can set its properties here:
vc.myAwesomeProperty = @"awesome!";
}
}
Hoffe das hilft!