iOS:将SwiftUI添加到项目中-无法正确加载场景

时间:2019-06-18 14:18:14

标签: swift swiftui

我正在Catalina Beta 2上运行并使用Xcode 11 Beta2。我已经创建并构建了默认模板SwiftUI项目,并且可以正常加载。然后,我打开了一个使用情节提要在Xcode 10中创建的小项目,然后将设置复制并粘贴到Apple的模板项目中。

应用程序,Info.plist,设置,应用程序委托,场景委托等中的所有内容看起来都是相同的,我已经遍历了很多遍,以查找问题所在。

这是我当前的应用程序代表:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

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

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        let config = UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
        return config // <<<<< Breakpoint !!!!
    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
    }
}

在Apples模板项目中,此方法有效,但在我的项目中,无效。

在我的断点处停止我可以看到connectingSceneSession和加载的配置已忽略Info.plist中的场景细节。而是使用零场景委托和外部显示角色创建默认配置。

真正奇怪的是,如果我执行:

po UISceneConfiguration(name: "Default Configuration", sessionRole: .applicationWindow)

在调试控制台中,它完全按照我的期望从Info.plist加载场景。

问题的核心似乎在于该应用无法在Info.plist中看到场景的定义,而是返回了一个新的外部显示场景。甚至在我尝试用苹果示例应用程序中的应用替换了Info.plist应用后。

有人知道会发生什么吗?

1 个答案:

答案 0 :(得分:0)

找到了。

这不是设置,代码或衍生数据。原来,SwiftUI应用程序已在模拟器上。重置模拟器后,一切便开始工作。