2013-05-04 4 views
3

У меня возникли проблемы с удалением модального вида. Я хочу показать (после нажатия кнопки) свой собственный SendMailViewController, который он сам показывает MFMailComposeViewController. Затем и после нажатия отмены отправки, в моем собственном контроллере SendMailView в файле didFinishWithResult я делаю [self rejectModalViewControllerAnimated: YES], и это работает. MFMailComposeView уходит.
Но тогда экран остается черным .... он думает, что мне также нужно удалить мой SendMailViewController из его родителя. Вот где я нажал кнопку ... даже после [self removeFromParentViewController] он по-прежнему остается черным ...remove ViewController с родительского экрана остается черным

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

И да, я бы хотел получить дополнительный диспетчер просмотра (SendMailViewController), потому что этот контроллер станет делегатом MFMailComposeViewController. В противном случае мой вызывающий (контроллер с кнопкой) получит большую ответственность. Или я тоже ошибаюсь?

Спасибо,

/jr00n

- (IBAction)tapExportButton:(id)sender 
{ 

    SendMailViewController *sendMailController = [[SendMailViewController alloc]init]; 

    [self presentViewController:sendMailController animated:YES completion:^() {[sendMailController openMailDialog];}]; 

    [sendMailController release]; 

} 

SendMailViewController:

- (void)openMailDialog 
{ 
    if ([MFMailComposeViewController canSendMail]) 
    { 
     MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
     mailer.mailComposeDelegate = self; 
    ... 
     [self presentModalViewController:mailer animated:YES]; 
    } 
} 


- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
.... 
// Remove the mail view 
// first i did this: 
// [self dismissModalViewControllerAnimated:YES]; 

    [self dismissViewControllerAnimated:YES completion:^{[self removeFromParentViewController];}]; 
} 
+0

ты это сделал? mailer.mailComposeDelegate = self; –

+0

Да, я сделал, я обновил свой примерный код и работа делегирования. В этом деле я делаю [self rejectModalViewController ...] – jr00n

+0

Я не уверен, почему ваш взгляд черный, но вам не нужен removeFromParentViewController. Модальные представления, я уверен, не имеют родительского контроллера представления. – rdelmar

ответ

3

Проблема заключается с [self dismissViewControllerAnimated:YES completion:^{[self removeFromParentViewController];}]; в вашем методе didFinishWithResult.
Удалить эту строку и добавьте следующую строку,

[controller dismissViewControllerAnimated:YES completion:^{[self dismissViewControllerAnimated:YES completion:nil]}]; 

Это убедитесь, что мы отвергаем контроллер после увольнения MailController

Смежные вопросы