Как я могу отправлять электронные письма из своего пользовательского класса UIActivity?

Я сделал класс костюма UIActivity. Мне нравится отправлять электронные письма с вложениями с классом, но я не могу отправлять электронные письма или представлять какие-либо ViewController из класса. Я пытаюсь представить Mail ViewController следующим образом:

- (void)prepareWithActivityItems:(NSArray *)activityItems
{
    NSString *subject = [NSString stringWithFormat:@"%@", [self.filePath lastPathComponent]];
    NSString *messageBody = [NSString stringWithFormat:@"%@ was extracted with @FilyForiOS, visit", [self.filePath lastPathComponent]];
        NSData *attachment = [NSData dataWithContentsOfFile:self.filePath];

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:subject];
    [mc setMessageBody:messageBody isHTML:NO];
    [mc setToRecipients:nil];
    [mc addAttachmentData:attachment mimeType:[[self.filePath lastPathComponent] pathExtension] fileName:[self.filePath lastPathComponent]];
    [self presentViewController:mc animated:YES completion:nil]; // Here is the error: No visible @interface for 'MailTo' declares the selector 'presentViewController:animated:completion:'
}

Может ли кто-нибудь сказать мне, как я могу представить ViewController из этого класса?

Я использовал этот код: Как я могу создать пользовательскую UIActivity в iOS?


person David Gölzhäuser    schedule 15.09.2013    source источник


Ответы (1)


Извините, что я только сейчас отвечаю на это (я знаю, что это было задано давно) Но вот мой ответ:

#import <MessageUI/MessageUI.h>

@interface EmailActivity : UIActivity <MFMailComposeViewControllerDelegate>

@end

@implementation EmailActivity

- (NSString *)activityTitle
{
    // Your title
    return @"Email";
}

- (UIImage *)activityImage
{
    // Your image
    return [UIImage imageNamed:@"Email"];
}

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
{
    return YES;
}

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

- (UIViewController *)activityViewController
{
    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc]init];

    if ([MFMailComposeViewController canSendMail])
    {
        NSString *subject = [NSString stringWithFormat:@"%@", [self.filePath lastPathComponent]];
        NSString *messageBody = [NSString stringWithFormat:@"%@ was extracted with @FilyForiOS, visit", [self.filePath lastPathComponent]];
        NSData *attachment = [NSData dataWithContentsOfFile:self.filePath];

        [mc setSubject:subject];
        [mc setMessageBody:messageBody isHTML:NO];
        [mc setToRecipients:nil];
        [mc addAttachmentData:attachment mimeType:[[self.filePath lastPathComponent] pathExtension] fileName:[self.filePath lastPathComponent]];

        mc.mailComposeDelegate = self;

        return mc;
    }
    else
    {
        return nil;
    }
}

@end
person klcjr89    schedule 17.03.2014