2

我想提前道歉,因为我对编程还很陌生,所以如果我不够具体,我很抱歉,但无论如何我会尽力解释我的问题,我正在创建一个需要为了能够发送电子邮件,我到处寻找,尝试了我能找到的每个示例代码,但每次使用代码时似乎都没有任何效果,我收到以下错误:

2013-02-03 20:23:39.372 音 [16409:c07] 警告:尝试在

谁的视图不在窗口层次结构中!

这是我当前在viewcontroller.h文件中使用的代码:

UIViewController <MFMailComposeViewControllerDelegate>
- (IBAction)Mail:(id)sender;

这是在我的viewcontroller.m文件中:

- (IBAction)Mail:(id)sender {
if ([MFMailComposeViewController canSendMail]) {
    MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];

    mail.mailComposeDelegate = self;

    [mail setSubject:@"Subject"];

    NSArray *recipient = [NSArray arrayWithObjects:@"mail@example.com", nil];
    [mail setToRecipients:recipient]; 

    NSString *body = @"body!";
    [mail setMessageBody:body isHTML:NO];

    [self presentModalViewController:mail animated:YES];
}
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
[self dismissModalViewControllerAnimated:YES];
}

我还收到一条消息,说 selfpresentModalViewController和 selfdismissModalViewController在 IOS 6 中已弃用,这是否意味着我不能使用它或者我做错了什么?

因此,如果我对邮件作曲家做错了任何帮助,我将不胜感激,如果我不够具体,我再次抱歉,提前谢谢

4

5 回答 5

0
[self presentModalViewController:mail animated:YES];

可以替换为

[self presentViewController:mail animated:YES completion:nil];

[self dismissModalViewControllerAnimated:YES]; 

经过

[self dismissViewControllerAnimated:YES completion:nil];
于 2013-02-04T06:11:48.517 回答
0

您可以使用 presentModalViewController:animated: 来显示模态视图控制器,但现在建议使用新的:presentViewController:animated:completion:。新的 on 拥有一个完成处理程序,您可以更好地控制代码。注意新方法需要 iOS 5.0 以上版本。如果你的目标是iOS5.0以上,你应该使用新的方法。与dismissModalViewControllerAnimated: 相同,请改用dismissViewControllerAnimated:completion:。

于 2013-02-04T04:59:34.067 回答
0

警告“警告:尝试显示不在窗口层次结构中的视图!” 表明视图未在 Interface Builder 中或以编程方式连接。

Xcode 检查您在项目设置中使用的 API 会导致弃用警告。如果您将 Xcode 项目的 Build Settings 的 IOS 部署目标设置为 iOS 6,那么任何被 Apple 标记为已弃用的 API(例如 presentModalViewController 和dismissModalViewController)都将被标记。

而是分别使用presentViewController:animated:completion: 和dismissViewControllerAnimated:completion:。

于 2013-02-04T05:02:40.937 回答
0

嗨,您可以检查 MFMailComposerViewController 类是否存在。-(void)email{Class emailClass=(NSClassFromString(@"MFMailComposeViewController"));if emailClass!=nil)if ([emailClass canSendMail]{[self displayComposePage]; }

于 2013-02-04T12:53:08.430 回答
0

就像 Sudha 所说,[self presentViewController:mail animated:YES/NO completion:nil]; 从 FromiOS6开始使用,presentModalViewController并且dismissModalViewController已被弃用,它们与完成一起使用,这对于您的情况将是 nil 。

于 2013-02-04T06:03:55.933 回答