1

完了ブロック構文でMFMailComposeViewController プロパティを使用したいのですmailComposeDelegateが、それが可能かどうかはわかりません。TWTweetComposeViewController completionHandlerプロパティの動作に似たもの:

TWTweetComposeViewController __weak *twee = tweeter;
tweeter.completionHandler = ^(TWTweetComposeViewControllerResult result) {
    // code here
};

私が持っているコードはMFMailComposeViewControllerを作成しviewControllerますが、この「電子メールで共有」機能はUIViewcontrollerカスタムMYSharingクラスではなく、参照を保存する必要があります。

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
// more code here
_viewController = viewController;
picker.mailComposeDelegate = self;
[viewController presentModalViewController:picker animated:YES];

mailComposeController:didFinishWithResult:error:from MFMailComposeViewControllerDelegateはそれを使用し_viewControllerてモーダルを閉じます。

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

ブロックをよく理解していないのですが、このような構文はありますか?

picker.mailComposeDelegate = ^(???)(??? ??? ???) {
    [viewController dismissModalViewControllerAnimated:YES];
}

MFMailComposeViewController(BlocksKit) (github にソースがあります)を見つけましたが、それでも構文変換でつまずきます。

4

2 に答える 2

2

現在、MFMailComposeViewController の完了ハンドラはありません。

MFMailComposeViewController を提示したビュー コントローラーを参照する場合は、以下のようなコードで、presentingViewController プロパティを使用します。

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    [controller.presentingViewController dismissModalViewControllerAnimated:YES];
}
于 2012-06-08T04:56:05.050 に答える
0

[self dismissModalViewControllerAnimated:YES];メソッドから呼び出してみませんMFMailComposeViewControllerDelegateか?

于 2012-06-08T07:47:14.783 に答える