Имам UITableViewController, представящ списък с контакти, когато потребителят избере ред, той ще покаже UIActionSheet, за да поиска от потребителя действие (обаждане, изпращане на sms...).
Потребителят избира действие и този първи UIActionSheet ще покаже друг UIActionSheet, който съдържа телефонни номера.
Потребителят избира телефонен номер и това трябва да показва съставителя на SMS съобщение.
Проблемът е, че когато потребителят избере телефонен номер, изгледът за съставяне на съобщения не се показва (само черен екран) и получавам MessageComposeResultCancelled в didFinishWithResult на MFMessageComposeViewController.
Което генерира това предупреждение „Предупреждение: Опит за отхвърляне от контролера за преглед, докато се изпълнява презентация или отхвърляне!“
Как мога правилно да се обадя и да покажа съставителя на SMS съобщения?
(това работи перфектно, ако го извикам директно, когато потребителят избере ред в списъка с didSelectRowAtIndexPath)
Ето малко код:
1- извикване на първия UIActionSheet в метода didSelectRowAtIndexPath:
UIActionSheet *popupQuery;
...
[popupQuery showInView:self.view];
2- извикване на втори UIActionSheet в clickedButtonAtIndex метод:
UIActionSheet *popupQuery2;
...
[popupQuery showInView:self.view];
3- от същия метод, повикване към съставител на съобщения:
[self sendSMS:@"" recipientList:[phoneNumbers objectAtIndex:buttonIndex]];
методът, който показва съставителя на съобщения:
(void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText])
{
controller.body = bodyOfMessage;
controller.recipients = recipients;
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
}
}
canSendText
Връща булева стойност, показваща дали текущото устройство може да изпраща текстови съобщения. Въпреки товаcanSendText
може да върне true в симулатора, тъй като може да имате инсталирано приложението за съобщения на вашия Mac (вижте допълнителен въпрос mby .me/Gw) - person Dan Clarke   schedule 13.03.2013