繁体   English   中英

在模拟器+物理设备上运行的应用突然出现黑屏

[英]App running on simulator + physical device suddenly have black screen

在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
    }

}

问题在于以下行:

 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
    }

}

尝试并分享结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM