1

我正在使用此代码崩溃

不支持推送导航控制器

 MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
    messageController.messageComposeDelegate = self;
    [messageController setRecipients:recipents];
    [messageController setBody:message];
    [self.parentViewController presentViewController:messageController animated:YES completion:nil];
4

4 回答 4

4
[self presentViewController:messageController animated:YES completion:nil];
于 2014-07-03T12:51:40.327 回答
1

您的视图是否在 NavigationController Stack 中?尝试这个-

[self.navigationController presentViewController:messageController animated:YES completion:nil];
于 2014-07-03T11:18:23.510 回答
1

如果您使用storyboardor .xib,下面的代码可以帮助您。

添加MessageUI.framework

为导入类写这一行。

#import <MessageUI/MessageUI.h>

设置委托

@interface ListViewController : UIViewController <MFMessageComposeViewControllerDelegate, UINavigationControllerDelegate>

实现以下方法

- (IBAction)sendMessage:(UIButton *)sender
{
    if([MFMessageComposeViewController canSendText])
   {
        MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
        controller.body = @"Hello...";
        controller.recipients = [NSArray arrayWithObjects:@"recipient1, recipient2, recipient3", nil];
        controller.messageComposeDelegate = self;
        controller.delegate = self;
        [self presentViewController:controller animated:YES completion:nil];
   }
}

实现其委托方法以解除

#pragma mark - Message Delegate ============================

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result)
    {
        case MessageComposeResultCancelled: break;

        case MessageComposeResultFailed:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"Sorry, something went wrong, please try again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
        }
        break;

        case MessageComposeResultSent: break;

        default: break;
    }

    [[controller presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}
于 2014-07-03T11:55:15.497 回答
0

这是不可能的,因为文档说这MFMessageComposeViewControllerUINavigationController

超频 @interface MFMessageComposeViewController : UINavigationController

迅速 class MFMessageComposeViewController : UINavigationController

于 2019-10-03T05:12:57.930 回答