macos - SwiftUI:MacOS 上的 AppDelegate

标签 macos swiftui

我正在将 SwiftUI iOS 应用程序移植到 macOS。它使用 @UIApplicationDelegateAdaptor 属性包装器来绑定(bind) UIApplicationDelegate 类。不幸的是,UIApplicationDelegate 类在 macOS 上不可用,所以我想知道如何绑定(bind)我的自定义 AppDelegate。

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
    ...
    }
}

struct MyApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        ...
    }
}

最佳答案

几乎是一样的,只不过后来用NS代替了UI。我做的与你略有不同:

@main
struct MyApp: App {
    
    // MARK: - Properties
    // Used variables
    @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    @Environment(\.openURL) var openURL
    
    var body: some Scene {
        WindowGroup {
            MainControlView()
        }
        .commands {
            FileMenuCommands(listOfContainers: listOfContainers)
        }
    }
}

然后你可以这样写你的应用委托(delegate):

import AppKit
import SwiftUI

class AppDelegate: NSObject, NSApplicationDelegate {
    // Whatever you want to write here
}

这一切都对我有用。

关于macos - SwiftUI:MacOS 上的 AppDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71291654/

相关文章:

python - "ERROR:root:code for hash md5 was not found"使用任何 hg mercurial 命令时

c - 在 Mac 上构建狡猾的国际象棋引擎

macos - 如何在 OSX 上的事件 docker 机器之间切换?

SwiftUI ForEach 获取二维数组中的元素和索引

swift - 从 ScrollView 中获取索引

bash - 防止 sed 创建临时文件

Ruby 提示 nokogiri libiconv.2.dylib

ios - 如何检测 SwiftUI 中 TextField 的实时变化?

ios - SwiftUI:菜单打开时如何忽略背景上的点击?

swiftui - 如何在 macOS 上的 SwiftUI 应用程序的编辑菜单中启用删除键快捷方式?