嘗試從NSObject類實現時,我遇到了MFMailComposeViewController的問題。MFMailComposeViewController從NSObject類顯示問題 - iOS
我已經使用MFMailComposeViewController多次沒有問題,但始終在視圖控制器。
但是,在這種情況下,我調用了一個將運行的NSObject類,而用戶通常在一個ViewController上。然而,這段代碼是從許多視圖控制器運行的,因此使用了NSObject,並且我需要允許作曲者通過任何視圖控制器呈現。
問題是,當完成時,它需要拋出一個電子郵件作曲家,我無法得到這個工作。相反,它從不啓動郵件編輯器視圖。
我有代表到位,代碼如下,代表在.h中設置。
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
if([MFMailComposeViewController canSendMail]){
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:NO];
[mc setToRecipients:toRecipents];
[[mc navigationBar] setTintColor: [UIColor whiteColor]]; // Text color
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:^{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}];
}
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result)
{
case MFMailComposeResultCancelled:
// NSLog(@"Mail cancelled");
break;
case MFMailComposeResultSaved:
// NSLog(@"Mail saved");
break;
case MFMailComposeResultSent:
// NSLog(@"Mail sent");
break;
case MFMailComposeResultFailed:
// NSLog(@"Mail sent failure: %@", [error localizedDescription]);
break;
default:
break;
}
// Close the Mail Interface
[self dismissViewControllerAnimated:YES completion:NULL];
}
我也試圖代碼然而,轉移到AppDelegate中,並使用一個通知從NSObject類火的作曲家,使用這種方法我發現作曲家將顯示在推VC,但如果當前正在顯示模態視圖,但不顯示作曲者。最後,我嘗試添加一個完全獨立的視圖控制器,將郵件編輯器添加到它,並通過AppDelegate添加,但這也只會顯示在推送的VC上,而不是模態VC。
我的想法是,我需要找到導航堆棧的「頂部」,以顯示上面的作曲家,但我不是100%確定。
我會歡迎任何能夠展示我如何實現這一點的人的意見,因爲我確信它一定是可能的,因爲如果代碼在範圍內,我可以將MailController添加到模態視圖視圖控制器本身,但顯然這意味着我需要將這樣的代碼添加到多個VC中,儘管我可以,但它似乎是一種奇怪的方式必須繼續。
謝謝大家!
剛纔我碰到這個問題,並有一個預感是問題。感謝您發佈後續信息以確認我的懷疑。 – Adrian 2015-09-23 01:14:55