私はすでに関連する質問に目を通しましたが、何も私の問題を解決していません.
dismissViewControllerAnimated:animated:completion
とpresentViewControllerAnimated:animated:completion
を連続して使おうとしています。ストーリーボードを使用して、部分的なカール アニメーションを介してモーダルに InfoController を表示しています。
部分的なカールにより、開始したい InfoController のボタンが表示されますMFMailComposeViewController
。部分的なカールは を部分的に隠しているため、MFMailComposeViewController
最初に部分的なカールのアニメーションを解除して InfoController を閉じたいと思います。MFMailComposeViewController
次に、アニメーション化したいと思います。
現在、これを試してみると、部分的なカールはアニメーション化MFMailComposeViewController
されませんが、表示されません。また、次の警告があります。
警告: MFMailComposeViewController: を表示しようとしています: InfoController: のビューがウィンドウ階層にありません!
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];
}
[self dismissViewControllerAnimated:YES completion:^{}];
また、 inをコメント アウトすると(IBAction)emailMe
、MFMailComposeViewController
in がアニメーション化されますが、部分的なカールの後ろに部分的に隠されます。最初にカールを閉じてからアニメーション化するにはどうすればよいMFMailComposeViewController
ですか?
どうもありがとう!
編集:コメントアウトした場合のビューの下の画像[self dismissViewControllerAnimated:YES completion:^{}];