Сборка SwiftUI «Hello World» на MacOS - PullRequest
1 голос
/ 11 июня 2019

SwiftUI «Hello World» работает на iOS, но НЕ на MacOS.

Попытка создать простой пример SwiftUI "Hello World", чтобы увидеть, как он работает на Mac, но я получаю пустое приложение с черным экраном.

Я использую Xcode 11 MacOS цель проверена MacOS версии 10.15 Beta (19A471t)

import SwiftUI

struct ContentView : View {
    var body: some View {
        VStack {
            Toggle(isOn: /*@START_MENU_TOKEN@*/.constant(true)/*@END_MENU_TOKEN@*/) {
                Text(/*@START_MENU_TOKEN@*/"Toggle"/*@END_MENU_TOKEN@*/)
            }
            Stepper(value: /*@START_MENU_TOKEN@*/.constant(4)/*@END_MENU_TOKEN@*/, in: /*@START_MENU_TOKEN@*/1...10/*@END_MENU_TOKEN@*/) {
                /*@START_MENU_TOKEN@*/Text("Stepper")/*@END_MENU_TOKEN@*/
            }
            Text("Hello World")
        }
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

Ответы [ 4 ]

5 голосов
/ 11 июня 2019

Это известная проблема, упомянутая в Примечания к выпуску бета-версии Xcode 11 :

Бета-версия Xcode 11 не поддерживает работу со SwiftUI в проекте, настроенном для использования UIKit дляMac.

Таким образом, единственный вариант, который у нас есть, это дождаться следующего выпуска бета-версии Xcode 11.


Обновление: это работает с бета-версией Xcode 11.0 2.

1 голос
/ 18 июня 2019

Хорошо работает на Xcode 11 beta 2 и macOS 10.15 beta2.

enter image description here

1 голос
/ 18 июня 2019

Теперь все в порядке с Xcode 11 beta 2 :

Xcode 11 beta поддерживает разработку с SwiftUI.

Обратите внимание, что скелетное приложение созданоBeta 1 (созданный из меню New project) не будет работать.Вам нужно использовать тот, который создан в бета-версии 2.

0 голосов
/ 14 июня 2019

Хотя известной проблемой является отсутствие поддержки Xcode 11 beta 1, ее можно включить, изменив настройку сцены в методе SceneDelegate willConnectTo:

#if targetEnvironment(UIKitForMac)
    let windowScene = UIWindowScene(session: session, connectionOptions: connectionOptions)
    let window = UIWindow(windowScene: windowScene)
#else
    let window = UIWindow(frame: UIScreen.main.bounds)
#endif
    window.rootViewController = UIHostingController(rootView:
      ContentView()
        .environmentObject(TimersStore.shared)
        .environmentObject(SettingsStore.shared)
    )

У меня этот код защищен, потому что по какой-то причине, если вы используете UIWindowScene на мишенях iOS / iPadOS, это приводит к тому, что клавиатура больше не появляется и ввод текста не работает. Это также относится и к приложению, работающему в macOS, но вы можете, по крайней мере, проверить, как ваше приложение выглядит / работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...