簡體   English   中英

使用MFMessageComposeViewController時不支持推送導航控制器

[英]Pushing a navigation controller is not supported when using MFMessageComposeViewController

我正在使用此代碼進行崩潰

不支持推導航控制器

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

您的視圖在NavigationController堆棧中嗎? 嘗試這個-

[self.navigationController presentViewController:messageController animated:YES completion:nil];

如果您使用storyboard .xib.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];
}

這是不可能的,因為文檔MFMessageComposeViewControllerUINavigationController

OC @interface MFMessageComposeViewController : UINavigationController

迅捷 class MFMessageComposeViewController : UINavigationController

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM