I ' Мы создали настраиваемый контроллер представления контейнера, используя новые методы контроллера представления контейнера UIViewController в iOS 5.
Проблема заключается в том, что у моего дочернего контроллера контейнера UIViewController есть definePresentationContext = YES
, когда он создает и представляет другой контроллер модального представления , UIKit устанавливает контейнер (а не дочерний элемент) как представляющий контроллер.
Например, в MyChildViewController.m:
- (void)showMailComposeView:(id)sender {
__block MFMailComposeViewController *vc =
[[MFMailComposeViewController alloc] init];
vc.mailComposeDelegate = self;
vc.subject = @"Subject";
self.definesPresentationContext = YES;
[self presentViewController:vc animated:YES completion:^{
if ([self.modalViewController isEqual:vc])
NSLog(@"This should print...");
if ([vc.presentingViewController isEqual:self.parentViewController])
NSLog(@"... but this shouldn't");
// NOTE: Both log statements printed
}];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error
{
[self dismissViewControllerAnimated:YES completion:^{}];
// NOTE: self.parentViewController.view now displays instead of self.view
}
Где я ошибаюсь?
Как убедиться, что при закрытии модального представления открывается дочернее представление (а не вид контейнера)?