NSObject サブクラスから MFMailComposeViewController を提示しようとしています。シナリオは次のとおりです。
- ユーザーがボタンをタップしてプロセスを開始するUIViewControllerサブクラスがあります
- このプロセスのすべてのロジックは、この ViewController から NSObject サブクラスに取り出されます
- プロセスに何か問題がある場合は、UIAlertView を表示しています
- この alertView のボタンの 1 つは、ユーザーが私にフィードバックを送信できるように mailComposer を開く必要があります。
NSObject サブクラスから mailComposer を提示しようとすると、「クラス階層にないモーダル ビュー コントローラーを提示しようとしています」というメッセージが表示されます。そのため、viewController を MFMailComposeViewController のデリゲートとして設定しています。しかし、alertView の「フィードバックを送信」ボタンを押すと、ボタンが消えて、同じ「クラス階層にないモーダル ビュー コントローラーを提示しようとしています」というエラーが表示されます。この方法で rootViewController とは何かをログに記録しようとしています:
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIViewController *rootViewController = window.rootViewController;
NSLog(@"rvc - %@", [rootViewController description]);
しかし、ログは rvc が (null) に等しいことを示しています。NSObject から直接 mailController を提示できますか、またはどのように正しい方法で行うことができますか?