Проблема с контроллерами модального представления и definePresentationContext

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
}

Где я ошибаюсь?

Как убедиться, что при закрытии модального представления открывается дочернее представление (а не вид контейнера)?

6
задан followben 28 October 2011 в 00:20
поделиться