iOS 13 应用程序每次点击应用程序图标时都会请求一个新场景



我正在用多个窗口设置我的应用程序。它运作良好。但是当我从跳板打开我的应用程序时,它每次都会创建一个新窗口。

我使用的是最新的 Xcode 和 iPadOS 13.0 测试版。我所有的视图控制器、视图等都是以编程方式制作的。我唯一的故事板是LaunchScreen。

信息列表

<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<true/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default</string>
<key>UISceneDelegateClassName</key>
<string>ComicReader.SceneDelegate</string>
</dict>
</array>
</dict>
</dict>

应用委托.swift

func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
UISceneConfiguration(name: "Default", sessionRole: connectingSceneSession.role)
}

场景代表.swift

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let scene = scene as? UIWindowScene else { return }
window = UIWindow(windowScene: scene)
window?.rootViewController = DelegateHelper.rootViewController()
window?.makeKeyAndVisible()
}
}

在 Apple 的库示例中,如果打开应用,轻扫到主屏幕,然后再次打开应用,我又回到了原来的位置,无需再次调用scene(_:willConnectTo)。在我自己的应用程序上,每次打开应用程序时都会调用scene(_:willConnectTo),放置断点显示我确实在每次启动时都会收到不同的UIScene和UISceneSession对象。

我没有显示任何 NSUserActivity 代码,因为我首先是因为我还没有任何状态恢复。实现它不会改变任何事情。

如果你有一些想法,我很高兴阅读你!

所以,我从上周开始就在寻找这个。今天,我决定评论我所有的AppDelegate,SceneDelegate,并在Info.plist中只保留一个场景配置。从默认模板重写 AppDelegate 和 SceneDelegate 以逐步挖掘。

它适用于首次尝试使用默认模板。我重写了完全相同的所有内容...剧照作品。

问题出在哪里?UIWindowSceneSessionRoleApplication array中Info.plist中的"默认"配置是"Item 1",而不是"Item 0"。git 将所有内容都藏起来,只有重新排序才能使其也能工作。

我希望这对某人有所帮助。

相关内容

  • 没有找到相关文章

最新更新