Ios Swift情节提要应用程序在黑屏上启动 大家好,

Ios Swift情节提要应用程序在黑屏上启动 大家好,,ios,swift,xcode,storyboard,uikit,Ios,Swift,Xcode,Storyboard,Uikit,我正在使用故事板构建一个Swift应用程序。几个月来我一直工作得很好,但突然间我的应用程序无法正常加载。每当我在模拟器或物理iPhone上打开它时,启动屏幕就会在黑屏出现之前显示出来 我的Mac电脑安装在macOS Big Sur开发者Beta 5和Xcode 12 Beta 6上,我的iPhone安装在iOS 14开发者Beta 5上。 这是突然发生的,我不记得做了什么导致它 以下是我到目前为止所尝试的… 重命名情节提要并将目标的“常规”选项卡更新为新名称,以及执行相同操作,但手动编辑Inf

我正在使用故事板构建一个Swift应用程序。几个月来我一直工作得很好,但突然间我的应用程序无法正常加载。每当我在模拟器或物理iPhone上打开它时,启动屏幕就会在黑屏出现之前显示出来

我的Mac电脑安装在macOS Big Sur开发者Beta 5和Xcode 12 Beta 6上,我的iPhone安装在iOS 14开发者Beta 5上。

这是突然发生的,我不记得做了什么导致它

以下是我到目前为止所尝试的…
  • 重命名情节提要并将目标的“常规”选项卡更新为新名称,以及执行相同操作,但手动编辑Info.plist
  • 将情节提要移入和移出“复制捆绑资源”
  • 更新到最新的Xcode 12测试版(我在macOS Big-Sur上)
  • 使用清除派生数据
  • 启动一个全新的项目,并通过拖放移动我所有的代码和资源(有趣的观察:当我启动一个新项目时,我在默认的Main.storyboard中添加了一个简单的标签,并在我的iPhone上运行。标签没有显示。)
  • 向我的AppDelegate添加一个函数,以便在启动时手动加载情节提要
  • 在AppDelegate和my Home View控制器中添加各种打印语句
AppDelegate 我补充说

let storyboard=UIStoryboard(名称:“Main”,捆绑包:nil)
让initialViewController=storyboard.InstanceEviewController(带有标识符:“主”)
self.window.rootViewController=initialViewController
self.window.makeKeyAndVisible()文件
打印(“应用程序启动”)
致我的代表。现在,当我运行我的应用程序时,我得到 印刷的。我还补充说

override func viewDidLoad(){
super.viewDidLoad()
打印(“主视图已加载”)
到我的主视图控制器。 现在,当我运行我的应用程序时,我会在Xcode中打印以下内容:

2020-08-28 13:11:20.140963+0100 MY-APP[11077:1951343] libMobileGestalt MobileGestaltCache.c:166: Cache loaded with 4536 pre-cached in CacheData and 53 items in CacheExtra.

2020-08-28 13:11:20.759943+0100 MY-APP[11077:1951162] Metal API Validation Enabled

Home view loaded

App launched
不过,我的iPhone上什么都没有。启动屏幕出现了,褪成黑色,就这样。我太困惑了


如果有人知道如何解决此问题,或者我可以尝试一些方法,请告诉我。提前谢谢!在最新版本中,窗口属性在AppDelegate中不再可用。现在,它被移动到SceneDelegate.swift。您可以在func scene willConnectTo中尝试执行以下操作:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let _ = (scene as? UIWindowScene) else { return }
    if let windowScene = scene as? UIWindowScene {
        self.window = UIWindow(windowScene: windowScene)
        let storyBoard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = storyBoard.instantiateViewController(withIdentifier: "Home")
        self.window?.rootViewController = initialViewController
        self.window!.makeKeyAndVisible()
    }
}
更新:同时使您的主界面下的“常规”菜单为空


此外,您还必须从项目的
Info.plist
中删除
UIMainStoryboardFileMain
UISceneStoryboardFile Main

确保在sceneDelegate和AppDelegate中都存在类似的窗口

class AppDelegate: UIResponder, UIApplicationDelegate {
    
// check for this

    var window: UIWindow?

// check for this

    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    }

}

如果你还不想切换到场景API,你也可以在
UIApplicationSceneManifest
部分将
UIApplicationSupportsMultipleScenes
设置为
NO
,该部分可能最近出现在你的Info.plist中。这就是我刚才做的,它为我解决了这个问题。

hmm,这没有做任何事情……不是吗应用程序仍会启动到黑屏。然后可能会出现其他问题。我们看不到您的故事板的详细信息。但是,General下的主界面是否为空?不,主界面已选择Main.storyboard。我一直在玩这个,但仍然没有运气…感谢您的帮助。您还必须删除UIMainSt来自项目Info.plist的oryboardFileMain和UISCenestryBoardFile Main。你解决了这个问题吗?@AshleyMills你们能找到解决方案吗?找到解决方案了吗?我也面临同样的问题。