Это работает, если вы представляете модальное представление из UISplitViewController.Это также может быть применено многими другими способами ...
Сначала создайте экземпляр в вашем .h файле для вашего appDelegate, (AppDelegate_iPad *appDelegate
), затем поместите это в ваш viewDidLoad или аналогичный метод:
ipadDelegate = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
Теперь представьте первый модальный вид следующим образом:
YOURVC *vc = [[YOURVC alloc] initWithNibName:@"YOURVC" bundle:nil];
[ipadDelegate.splitViewController presentModalViewController:vc animated:YES];
[vc release];
Скажем, у вас есть подпредставление, например UITableView, и вы хотите удалить модал из didSelectRowAtIndexPath.Все, что вам нужно сделать, чтобы отклонить ваш модал с помощью подпредставления, - это создать еще один экземпляр ipadDelegate внутри .h вашего подпредставления (при необходимости), снова сослаться на делегат [[UIApplication sharedApplication]] и отклонить:
[ipadAppDelegate.splitViewController dismissModalViewControllerAnimated:YES];
По сути, насколько это ни скучно, используйте контроллер вашего appDelegate для представления и отклонения модального режима, если вам нужно сохранять постоянную ссылку на presentingViewController ... потому что все вышеперечисленное просто не работает в моем случае.
Если вы выступаете с ipadDelegate, убедитесь, что вы проверили режим презентации в вашем MainWindow_iPad.xib.Ваш "Стиль перехода" должен быть "Вертикаль обложки", а "Презентация" должна быть "Текущий контекст", иначе ваш мод может быть представлен за другими видами.