Приложение iOS 13 запрашивает новую сцену каждый раз при нажатии значка приложения
Я настраиваю свое приложение с несколькими окнами. Работает хорошо. Но когда я открываю свое приложение с трамплина, оно каждый раз создает новое окно.
Я нахожусь на последних бета-версиях Xcode & iPadOS 13.0. Все мои viewcontrollers, представления и т. Д. Сделаны программно. Моя единственная раскадровка - LaunchScreen.
Info.plist
<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>
AppDelegate.swift
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
UISceneConfiguration(name: "Default", sessionRole: connectingSceneSession.role)
}
SceneDelegate.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, потому что я сначала это сделал, потому что у меня еще не было восстановления состояния. Реализация этого ничего не меняет.
Если у вас есть идеи, я буду рад вас прочитать!
1 ответ
Итак, я ищу это с прошлой недели. Сегодня я решил прокомментировать все свои AppDelegate, SceneDelegate и сохранить только одну конфигурацию сцены в Info.plist. Перепишите AppDelegate и SceneDelegate из шаблона по умолчанию для постепенного изменения.
Он работает с первой попытки с шаблоном по умолчанию. Я переписываю все идентично… все еще работает.
Проблема? Конфигурация по умолчанию в Info.plist в массиве UIWindowSceneSessionRoleApplication была "Элемент 1", а не "Элемент 0". Git спрятать все и только изменить порядок, который сделал это тоже работает.
Я надеюсь, что это поможет кому-то.