Avertissement: Essayez de présenter ViewController sur ViewController dont la vue ne se trouve pas dans la hiérarchie des fenêtres

Je l'ai déjà regardé à travers des questions, mais rien n'a résolu mon problème.

Je suis d'essayer d'utiliser dismissViewControllerAnimated:animated:completion et presentViewControllerAnimated:animated:completion dans la succession. À l'aide d'un storyboard, je suis modal présentant InfoController par l'intermédiaire d'une partielle curl animation.

Partielle curl révèle un bouton sur InfoController que je veux lancer le MFMailComposeViewController. Parce que la partielle curl cache partiellement la MFMailComposeViewControllerje tiens tout d'abord à rejeter InfoController par l'onu-l'animation de la partielle du roulage. Ensuite, je veux le MFMailComposeViewController pour animer.

À l'heure actuelle, lorsque j'essaie de cela, l'partielle curl onu-anime, mais le MFMailComposeViewController n'obtient pas présenté. J'ai aussi un avertissement:

Avertissement: Tentative de présenter MFMailComposeViewController:
InfoController: dont la vue n'est pas dans la fenêtre hiérarchie!

InfoController.h:

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>

@interface InfoController : UIViewController <MFMailComposeViewControllerDelegate>

@property (weak, nonatomic) IBOutlet UIButton *emailMeButton;

-(IBAction)emailMe:(id)sender;

@end

InfoController.m

#import "InfoController.h"

@interface InfoController ()

@end

@implementation InfoController 

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (IBAction)emailMe:(id)sender {
    [self dismissViewControllerAnimated:YES completion:^{
        [self sendMeMail];
    }];
}

- (void)sendMeMail {
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
if([MFMailComposeViewController canSendMail]){
    if(mailController)
    {
        NSLog(@"%@", self); //This returns InfoController 
        mailController.mailComposeDelegate = self;
        [mailController setSubject:@"I have an issue"];
        [mailController setMessageBody:@"My issue is ...." isHTML:YES];
        [self presentViewController:mailController animated:YES completion:nil];
    }
}
}

- (void)mailComposeController:(MFMailComposeViewController*)controller
          didFinishWithResult:(MFMailComposeResult)result
                        error:(NSError*)error;
{
    if (result == MFMailComposeResultSent) {
        NSLog(@"It's sent!");
    }
    [self dismissViewControllerAnimated:YES completion:nil];
}

Aussi, si j'en commentaire le [self dismissViewControllerAnimated:YES completion:^{}]; dans (IBAction)emailMele MFMailComposeViewController anime, mais c'est partiellement caché derrière l'partielle curl. Comment puis-je d'abord rejeter la boucle et puis d'animer dans le MFMailComposeViewController?

Merci beaucoup!

Edit: ci-Dessous de l'image de ce que la vue est comme si j'commentaire [self dismissViewControllerAnimated:YES completion:^{}];

Avertissement: Essayez de présenter ViewController sur ViewController dont la vue ne se trouve pas dans la hiérarchie des fenêtres

source d'informationauteur dianna