-2

ユーザーがクリックしたcell後、いくつかのコードの後に​​これを行います:

[self.window.rootViewController presentModalViewController:mailer animated:YES];

次に、キャンセル ボタンを押すか、このメソッドを送信すると:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
[[((UIViewController *)(self.superview.superclass)) presentedViewController] dismissModalViewControllerAnimated:NO];
}

しかし、私のアプリはクラッシュして消えます。

012-12-17 18:52:09.243 testapp[8293:15203] Mail cancelled: you cancelled the operation and no email message was queued
2012-12-17 18:52:09.243 testapp[8293:15203] +[UIResponder presentedViewController]: unrecognized selector sent to class 0xbb5db0
2012-12-17 18:52:09.244 testapp[8293:15203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[UIResponder presentedViewController]: unrecognized selector sent to class 0xbb5db0'
*** First throw call stack:
(0x1ba6022 0x1688cd6 0x1ba7aad 0x1b0ced0 0x1b0ccb2 0x4e466 0xa99bf 0xac64f 0xa63f2 0x8d05af 0x1ba7e99 0x50f14e 0x50f0e6 0x5b5ade 0x5b5fa7 0x5b5266 0x5343c0 0x5345e6 0x51adc4 0x50e634 0x1d39ef5 0x1b7a195 0x1adeff2 0x1add8da 0x1adcd84 0x1adcc9b 0x1d387d8 0x1d3888a 0x50c626 0x370d 0x26c5 0x1)
4

4 に答える 4

0

VCを却下しようとしている場合、これは機能するはずです。

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
   [self dismissModalViewControllerAnimated:NO];
}
于 2012-12-17T16:43:46.187 に答える
0

簡単に試す[self dismissViewControllerAnimated:NO completion:nil]

于 2012-12-17T16:43:07.113 に答える
0

試す [controller dismissModalViewControllerAnimated:NO];

于 2012-12-17T17:11:21.337 に答える
0

クラッシュの理由は、presentedViewController が iOS 5 以降にのみ存在するためです。iOS 4 で実行すると、表示されている例外が発生します。

DismissModalViewController は、iOS 4 + 5 の presentModalViewController で提示されたコントローラーを閉じる正しい方法です。iOS 6 でも動作しますが、非推奨です。代わりにpresentViewControllerとdismissViewControllerがあります。

于 2012-12-17T17:34:08.313 に答える