Я просто хотел добавить кое-что к тому, что сказал @ Скотт.Его ответ, безусловно, является самым простым и наиболее приемлемым способом сделать это сейчас с раскадровками, iOS 7 и 8 ... (и скоро, 9).
Определенно добавление контроллера представления в раскадровку и встраивание его, как описано@ Скотт это правильный путь.
Затем просто добавьте переход путем перетаскивания элемента управления из исходного контроллера представления к цели (той, которую вы хотите показать модально), выберите «Представить модально», когда появится маленькое представление с вариантами выбора для типаSegue.Наверное, неплохо было бы дать ему и имя (в приведенном ниже примере я использую «presentMyModalViewController»).
Одна вещь, в которой мне не хватало, - это случай @ Скотта, когда вы хотите передать некоторые данные этомумодально представленный контроллер представления, встроенный в контроллер навигации.
Если вы возьмете segue.destinationViewController, это будет UINavigationController, а не контроллер, встроенный в UINavigationController.
Итак,чтобы добраться до встроенного контроллера вида внутри контроллера навигации, вот что я сделал:
- (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!";
}
}
Надеюсь, это поможет!