Je voulais juste ajouter quelque chose à ce que @Scott a dit. Sa réponse est certainement la manière la plus simple et la plus acceptée de le faire maintenant avec Storyboards, iOS 7 et 8 ... (et bientôt, 9).
Ajouter définitivement un contrôleur de vue au Storyboard et l'intégrer comme décrit par @Scott est la bonne voie à suivre.
Ensuite, ajoutez simplement le segue en faisant glisser le contrôle depuis le contrôleur de vue source vers la cible (celui que vous souhaitez afficher modalement), sélectionnez "Présenter modalement" lorsque la petite vue apparaît avec les choix pour le type de segue. Probablement bon de lui donner un nom aussi (dans l'exemple ci-dessous, j'utilise "presentMyModalViewController").
Une chose dont j'avais besoin et qui manquait est le cas de @ Scott, c'est lorsque vous voulez réellement transmettre certaines données à ce contrôleur de vue présenté de manière modale qui est intégré dans le contrôleur de navigation.
Si vous récupérez le segue.destinationViewController, ce sera un UINavigationController, pas le contrôleur que vous avez intégré dans le UINavigationController.
Donc, pour accéder au contrôleur de vue intégré à l'intérieur du contrôleur de navigation, voici ce que j'ai fait:
- (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!";
}
}
J'espère que cela t'aides!