Как мне отобразить оповещение в родительском представлении в macOS

#swift #xcode #macos #sprite-kit

#swift #xcode #macos #sprite-kit

Вопрос:

Я создал протокол с именем Alertable, который я использую в своем классе GameScene: SKScene, Alertable { Я получил его для работы с iOS, но не с macOS

 extension Alertable where Self: SKScene {

    func showAlert(withTitle title: String, message: String) {
        #if os(iOS) || os(tvOS)
            let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)

            let okAction = UIAlertAction(title: "OK", style: .cancel) { _ in }
            alertController.addAction(okAction)

            view?.window?.rootViewController?.present(alertController, animated: true)
        #else // MacOS version
            let alert = NSAlert()
            alert.messageText = title
            alert.informativeText = message
            alert.addButton(withTitle: "OK")
            alert.addButton(withTitle: "Cancel")
            //alert.runModal() == .alertFirstButtonReturn
            //view?.window?.contentViewController?.present(alert)
        #endif
    }
  

Комментарии:

1. Раскомментировать //alert.runModal() == .alertFirstButtonReturn

2. Я закомментировал его, потому что он не работает, потому что он скрыт представлением SKScene. вот почему в версии iOS я должен настроить таргетинг на RootViewController, чтобы я мог видеть предупреждение. похоже, не получается сделать то же самое с macOS