在Swift 4上运行Xcode 9.4.1时,应用程序在任何View Controller上启动时突然卡在黑屏上。没有崩溃(也没有断点),并且当注册屏幕打开时,在出现“推送通知”权限窗口的同时,该视图在后台可见。接受窗口后,屏幕返回黑色。
App Delegate可以正常运行,并且日志似乎是正常的,就像视图已正确加载一样。
我尝试清理构建文件夹,删除“派生数据”,重置模拟器,然后重新启动手机和Xcode,但运气不佳。设备是iPhone 6,已在各种iPhone上测试过模拟器。
编辑:在“应用程序代表”中删除此功能后,该应用程序似乎可以正常工作。
func applicationDidBecomeActive(_ application: UIApplication) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window = UIWindow(frame: UIScreen.main.bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if application.applicationIconBadgeNumber > 0 {
let startVC = mainStoryboard.instantiateViewController(withIdentifier: "ViewController")
appDelegate.window?.rootViewController = startVC
appDelegate.window?.makeKeyAndVisible()
application.applicationIconBadgeNumber = 0
}
}
答案 0 :(得分:2)
问题出在以下几行:
appDelegate.window = UIWindow(frame: UIScreen.main.bounds)
您正在做的是将带有框架的新窗口对象设置为AppDelegate的关键窗口。
您应该将代码更新为:
func applicationDidBecomeActive(_ application: UIApplication) {
if application.applicationIconBadgeNumber > 0 {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let startVC = mainStoryboard.instantiateViewController(withIdentifier: "ViewController")
appDelegate.window?.rootViewController = startVC
appDelegate.window?.makeKeyAndVisible()
application.applicationIconBadgeNumber = 0
}
}
尝试并分享结果。