Я предполагаю, что вы используете Xcode 11 Beta
и macOS Mojave
или Catalina
.
Наряду с изменениями в plist
необходимо добавить в приложение функции жизненного цикла UISceneSession
делегат.
func application(_ application: UIApplication,
configurationForConnecting connectingSceneSession: UISceneSession,
options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// The name must match the one in the Info.plist
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
}
Кроме того, необходимо убедиться, что window
правильно создан в SceneDelegate
.
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = UIHostingController(rootView: ContentView())
self.window = window
window.makeKeyAndVisible()
}
, где ContentView
является основным SwiftUI
представление, которое вы хотите отобразить.
PS Убедитесь, что plist
указывает $(PRODUCT_MODULE_NAME).SceneDelegate
в качестве имени класса делегата, а делегат сцены называется SceneDelegate
Пример:
![enter image description here](https://i.stack.imgur.com/yt4x6.png)
Если вы используете Catalina
, вы можете включить Previews
в настройках сборки для вашей цели.
BuildПараметры -> Включить предварительный просмотр
Приложение I :
Убедитесь, что вы удалили ключ Раскадровка из Info.Plistи что you're targeting iOS 13
.
![enter image description here](https://i.stack.imgur.com/mquTdl.png)
![enter image description here](https://i.stack.imgur.com/EiLVy.png)
Добавление II:
Очистить Derived Data
, как предлагают многие разработчики в комментариях.