これは、私がすでに数時間かけて研究し、アプリがクラッシュしている理由を理解しようとしていることで、ごくわずかな問題です。MFMailComposeViewController iOS 10.2のpresentViewControllerでクラッシュする
私は2つのビューコントローラVC1、VC2を持っていて、VC2からMFMailComposeViewController
を呼び出しています。
は、これまでのところ私はUINavigationController(rootViewController: vc2)
でStoryboard ID
経由Storyboard ID
performSegueIdentifier
- を移行しようとしたが、何も働きました。私はさらにVC2に
UINavigationViewController
を埋め込もうとしましたが、運はありませんでした。は以下
@IBAction func sendEmail(sender: AnyObject) { if MFMailComposeViewController.canSendMail() { let mailComposerVC = configuredMailComposeViewController() presentViewController(mailComposerVC, animated: true, completion: nil) // CRASH } else { showSendMailErrorAlert() } } func configuredMailComposeViewController() -> MFMailComposeViewController { let mailComposerVC = MFMailComposeViewController() mailComposerVC.mailComposeDelegate = self mailComposerVC.setToRecipients(["[email protected]"]) mailComposerVC.setSubject("Reg: ") return mailComposerVC } func showSendMailErrorAlert() { let alert = UIAlertController(title: "Could Not Send Email", message: "Your device could not send e-mail. Please check e-mail configuration and try again.", preferredStyle: .Alert) presentViewController(alert, animated: true, completion: nil) }
すべての店舗やイベントの参照がまた良いですVC2で
IBAction
方法です。クラッシュログ
[__NSCFNumber pointSize]: unrecognized selector sent to instance 0xb0000000000000e5 2017-01-16 16:52:55.887082 Sample[2507:671461] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber pointSize]: unrecognized selector sent to instance 0xb0000000000000e5'
はを解決:
問題は、カスタムのナビゲーションバーです。
MFMailComposeViewController
と表示されたときに、私はUINavigationBar
の外観をリセットしています。 This投稿は私がそれを解決するのを助けました。グローバルファイルに以下の2つのメソッドを作成しました。
static func applyGlobalNavigationBarAppearance() { UINavigationBar.appearance().barTintColor = UIColor.blueColor() UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor(), NSFontAttributeName: UIFont.systemFontSize()] } static func applyMailNavigationBarAppearance() { UINavigationBar.appearance().barTintColor = UIColor.whiteColor() UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().titleTextAttributes = nil }
はい、私はカスタムビューでカスタムナビゲーションバーを作成しました。これはVC2になければなりません。私はあなたが言ったことに同意し、カスタムナビゲーションバーを削除しますが、VC2バーに影響を与えずにメールコンポーザーのカスタムナビゲーションバーのみを削除するにはどうすればいいですか? –
そして、私が 'AppDelegate'の' UINavigationBar.appearance() 'をコメントアウトしたときにうまくいきました。 –
解決策を見つけました。この投稿は私がそれを解決するのに役立ちましたhttp://stackoverflow.com/questions/15580405/override-uiappearance-property-for-mfmailcomviewviewcontroller私は正しい方向を指してくれてありがとう! –