2011-01-10 3 views
0

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

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>. 

Спасибо заранее, С.

ответ

10

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

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

if (![MFMessageComposeViewController canSendText]) { 
    // show message box for user that SMS cannot be sent 
} else { 
    MFMessageComposeViewController* picker = ...; 
    ... 
} 
+0

Спасибо. Теперь я знаю, в чем проблема – sek

1

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

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

Во-вторых, вы можете просто иметь: [self presentModalViewController: picker animated: YES];

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

+0

Да, у меня есть делегат, и я определил mailComposeController: didFinishWithResult: error :. И сборщик - ноль, но Как сделать это не ноль? – sek

+0

Вы писали про KennyTM? Если да, то что возвращает + canSendText? – westsider

2

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

0

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

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