1
我的應用程序有一個公共類,只要從多個NIB中的任何一個點擊「聯繫我們」,就會顯示一個actionSheet。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不起作用在發送電子郵件或按下取消按鈕後不會刪除
我得到這個警告:從不兼容的類型'UIViewController * __ strong'分配給'id'controller.mailComposeDelegate = rootViewController;
幫助讚賞。
嗨Inafziger。我還沒有創建一個單獨的「RootViewController」類。我在公共類中創建了一個對象「UIViewController * rootViewController」。有沒有辦法使用我擁有的,或者是唯一的解決方案來使用一個單獨的類(這似乎過於複雜)。 – Jeremy 2012-03-20 00:51:20
糟糕,我沒有看到。您可以使用此代碼所在的公共類來做同樣的事情。只需更改控制器即可。 mailComposeDelegate自我。 – lnafziger 2012-03-20 02:29:16
這個工作適合你嗎? – lnafziger 2012-03-23 02:36:12