Используете ли вы iOS 5?
Если это так, проблема, с которой вы сталкиваетесь, связана с задокументированным изменением: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/UIViewController/parentViewController
Важный бит по этой ссылке:
До iOS 5.0, если представление не имело родительского контроллера представления и было представлено модально, контроллер представления, который представлял его, был бы возвращен.Это больше не так.Вы можете получить контроллер представления, используя свойство presentingViewController.
Таким образом, изменение на self.presentingViewController может решить вашу проблему, но, вероятно, не удастся.
Использование этого кода из вашего первого модального:
[self dismissModalViewControllerAnimated:YES];
SecondViewController *sec = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
sec.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.presentingViewController presentModalViewController:sec animated:YES];
Вы не видите представленный новый контроллер представления.
Чтобы получить то, что вы хотите, после того, как хотите использовать новый (начиная с iOS5) метод:
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
Этот метод является рекомендуемой заменой для presentModalViewController.
И пользовательский метод на вашем первом контроллере представления, что-то вроде:
- (void)cycleModalViewControllersWithController:(UIViewController *)newViewController
Этот метод может отклонить ваш текущий модальный режим.и представьте новый, что-то вроде этого:
- (void)cycleModalViewControllersWithController:(UIViewController *)newViewController {
[self dismissViewControllerAnimated:YES completion:^{
[self presentViewController:newViewController animated:YES completion:NULL];
}];
}
Используя блок завершения, чтобы запустить новый модал, давайте подождем, пока старый модал не оживит.Таким образом, в вашем втором контроллере модального вида вы должны вызывать свой собственный метод на вашем первом контроллере модального вида и позволять ему управлять отклонением / представлением нового.