Мое приложение имеет общий класс, который отображает таблицу действий, когда нажимают «Contact Us» из любого из многих NIB.IOS5: Как вызывать электронную почту из класса NSObject
Если пользователь выбирает «Отправить нам по электронной почте» из всплывающего окна actionSheet, я бы хотел вызвать методы электронной почты из одного и того же общего класса. После исследования я осуществил это:
-(void)SendEmail {
rootViewController = (UIViewController*)
[(AppDelegate*)[[UIApplication sharedApplication] delegate] viewController];
// compose
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = rootViewController;
//format message
NSArray *recipientsArray = [[NSArray alloc] initWithObjects:@"[email protected]", nil];
[controller setToRecipients:recipientsArray];
[controller setSubject:[NSString stringWithFormat:@"A question about %@",string]];
[controller setMessageBody:outputMutString isHTML:YES];
//send
if (controller) [rootViewController presentModalViewController:controller animated:YES];
}
// didFinishWithResult
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error;{
if (result == MFMailComposeResultSent) {
}
[rootViewController dismissModalViewControllerAnimated:YES];
}
Это запустит новое сообщение электронной почты, однако:
didFinishWithResult не работает как модальный точка зрения не удаляется после отправки электронной почты или нажатия кнопки «Отмена»
Я получаю это предупреждение: присваивание 'id' из несовместимого типа 'UIViewController * __ strong' controller.mailComposeDelegate = rootViewController;
Помогите оценить.
Hi Inafziger. Я не создал отдельный класс «RootViewController». Я создал объект «UIViewController * rootViewController» в общем классе. Есть ли способ использовать то, что у меня есть, или это единственное решение для использования отдельного класса (что кажется чрезмерно сложным). – Jeremy
К сожалению, я этого не видел. Вы можете сделать то же самое с общим классом, в котором находится этот код. Просто измените контроллер. mailComposeDelegate к себе. – lnafziger
Это работало для вас? – lnafziger