У меня есть служебное приложение. Я реализовал этот код на оборотной стороне, который вызывает представление обратной связи для отправки электронного письма, например, руководство. Это работает, но затем, когда я нажимаю кнопку UIButton «Отправить отзыв», мое приложение сразу же вылетает с ошибкой *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController sendMail]: unrecognized selector sent to instance 0x89c1960'.
.
Я проверил эти вещи:
Я правильно объявил делегат и реализовал его для MailComposer.
Мой метод sendMail связан с событием TouchUp для кнопки.
Мои имена методов совпадают:
- (IBAction)sendMail;
и
- (IBAction)sendMail
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mfViewController = [[MFMailComposeViewController alloc] init];
mfViewController.mailComposeDelegate = self;
[self presentModalViewController:mfViewController animated:YES];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Status:" message:@"Your phone is not currently configured to send mail." delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
}
}
Код не попадает в этот метод, потому что у меня установлена точка останова в верхней части реализации метода, но она не вызывается. Также не активировалась точка останова в ViewDidLoad.
Если внимательно посмотреть на эту ошибку:
reason: '-[UIViewController sendMail]: unrecognized selector sent to instance
кажется, что ожидается контроллер представления с именем sendMail, а не метод. Я прочитал этот сообщение, которое кажется очень похожим, но я не вижу никаких других имен контроллеров представления. в раскрывающемся списке xib Identity. Я думаю, что это часть моей проблемы, но я не уверен, как это исправить.
Может быть, я должен представлять MFMailComposer через контроллер просмотра? Если да, то я не уверен, как это сделать.
Мы ценим любые предложения.