NSInvalidArgumentException при представлении ModalView - PullRequest
1 голос
/ 14 марта 2012

Сообщение об исключении:

Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: 
Application tried to present a nil modal view controller on target <Navigator: 0x1bed0d0>.

Вот мой код:

    partial void BtnTest (MonoTouch.Foundation.NSObject sender)
    {
        MFMailComposeViewController view = new MFMailComposeViewController();
        view.SetToRecipients(new string[]{"blubb@blubb.de"});
        view.SetMessageBody("Hier steht nun der zusammengestellt text :)", false);
        //view.MailComposeDelegate = new CustomMailComposeDelegate();
        view.SetSubject("Test");

        view.Finished += (s,e)=>
                     {
                            this.NavigationController.DismissModalViewControllerAnimated(true);
        };

        this.BeginInvokeOnMainThread(()=>
        {
            this.NavigationController.PresentModalViewController(view, true);
        });

    }

Работает на эмуляторе iPad, но не на устройстве.

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Переместите это объявление за пределы вашего метода.Скорее всего, он получит GC, как только выйдет за рамки.

1 голос
/ 15 марта 2012

Ваше устройство настроено на отправку электронной почты? обратите внимание, что даже если это так, вы не должны учитывать, что это будет иметь место на всех пользовательских устройствах.

IWO, вы должны позвонить MFMailComposeViewController.CanSendMail, как это задокументировано Apple. Две важные цитаты:

Вы всегда должны проверять, настроено ли текущее устройство для отправки электронной почты вообще, используя метод canSendMail

и

Вы не должны пытаться использовать этот интерфейс, если метод canSendMail возвращает NO.

Пример:

   if (MFMailComposeViewController.CanSendMail) {
       ... your code ...
   } else {
       ... show warning, like an UIAlertView
   }
...