Eu só queria acrescentar algo ao que @Scott disse. Sua resposta é definitivamente a maneira mais fácil e aceita de fazer isso agora com Storyboards, iOS 7 e 8 ... (e em breve, 9).
Definitivamente, adicionar um controlador de visualização ao Storyboard e incorporá-lo conforme descrito por @Scott é o caminho certo a seguir.
Então, basta adicionar a segue arrastando e controlando do controlador de visualização de origem para o destino (aquele que você deseja mostrar modalmente), selecione "Apresentar modalmente" quando a pequena visualização aparecer com as opções para o tipo de segue. Provavelmente bom dar um nome a ele também (no exemplo abaixo eu uso "presentMyModalViewController").
Uma coisa que eu precisava que estava faltando é o caso de @ Scott é quando você deseja realmente passar alguns dados para aquele controlador de visualização apresentado modalmente que está embutido no controlador de navegação.
Se você pegar o segue.destinationViewController, ele será um UINavigationController, não o controlador que você incorporou ao UINavigationController.
Então, para chegar ao controlador de visualização incorporado dentro do controlador de navegação, aqui está o que eu fiz:
- (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!";
}
}
Espero que isto ajude!