嗯,这是一个非常小的问题,我已经花了几个小时研究并试图弄清楚应用程序崩溃的原因。
假设我有两个视图控制器VC1,VC2,我正在从VC2调用MFMailComposeViewController
。
到目前为止,我已尝试从VC1过渡到VC2 ..
performSegueIdentifier
Storyboard ID
Storyboard ID
与UINavigationController(rootViewController: vc2)
但没有任何效果。我甚至尝试将UINavigationViewController
嵌入到VC2中,但也没有运气。
以下是VC2中的IBAction
方法
@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(["abc@abc.com"])
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)
}
所有商店和活动参考也都很好。
崩溃日志
[__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'
解决:
问题在于自定义导航栏。我在呈现UINavigationBar
时重置MFMailComposeViewController
外观并将其重新设置为解除。
This帖子帮我解决了。
我在全局文件中创建了以下两种方法。
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
}
答案 0 :(得分:1)
奇怪!我的猜测是你通过UIAppearance
设置了一些东西(字体?),而邮件编辑器是第一次引用这个外观属性。您的项目是否使用UIAppearance(例如UINavigationBar.appearance
)?如果是这样,请暂时将它们评论出来。看看是否能解决问题,然后找出哪个电话是罪魁祸首。