Проблема MFMessageComposerViewController в iPhone SDK - PullRequest
0 голосов
/ 10 января 2011

Я пытаюсь реализовать приложение SMS. В этом, когда я попытался отправить свое SMS, я получил исключение в [self.navigationController presentModalViewController: picker animated: YES]; Я очень новичок в этом. Ребята, не могли бы вы мне помочь? Мой код выглядит следующим образом.

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.delegate = self;

picker.recipients = [NSArray arrayWithObject:@"123456789"]; // your recipient number or self for testing
picker.body = @"test from OS4";

[self.navigationController presentModalViewController:picker animated:YES];
[picker release];

Мой журнал сообщений выглядит следующим образом,

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target <UINavigationController: 0x5b2c120>.

Заранее спасибо, S.

Ответы [ 4 ]

10 голосов
/ 10 января 2011

Сообщение означает, что picker равно nil, т.е. MFMessageComposeViewController не был успешно создан.

Убедитесь, что [MFMessageComposeViewController canSendText] возвращает ДА, т. Е.

 if (![MFMessageComposeViewController canSendText]) {
    // show message box for user that SMS cannot be sent
 } else {
    MFMessageComposeViewController* picker = ...;
    ...
 } 
2 голосов
/ 23 августа 2011

Скорее всего, вы тестируете это в симуляторе iPhone, MFMessageComposeViewController не работает на симуляторе и возвращает nil

1 голос
/ 10 января 2011

Три вещи приходят на ум.

Во-первых, вы объявили, что ваш класс контроллера представления является реализацией MFMailComposeViewControllerDelegate? И вы определили mailComposeController: didFinishWithResult: ошибка:?

Во-вторых, вы могли бы просто иметь: [self presentModalViewController: анимированный выбор: ДА];

В-третьих, вы уверены, что сборщик не ноль?

0 голосов
/ 06 февраля 2012

Основная причина того, что модальное представление выдает нулевое исключение, обычно связана с тем, что на тестируемом устройстве не настроена учетная запись электронной почты в настройках (следовательно, другой комментарий о модальном виде, не работающем в симуляторе).Ответ @ KennyTM - отличный способ справиться с этим.Просто откройте диалоговое окно с уведомлением пользователя.

...