首页 > 解决方案 > 如何从 SwiftUI2 App 条目中获取 NSView

问题描述

我正在将使用 SwiftUI 1 构建的 macOS 应用程序迁移到 SwiftUI 2。有一个功能允许用户使用 pdf 将主视图保存为 pdf NSPrinterOperation,它需要一个NSView实例。

目前,该应用程序在 SwiftUI 1 上AppDelegate,我可以通过此代码获取主视图

Button("Print") {
   let appDelegate = NSApp.delegate as! AppDelegate
   let view = appDelegate.window.contentView! // returns the NSHostingView set up in AppDelegate.swift
   ...
   NSPrintOperation(view: view, printInfo: newInfo).run()
}

自从升级到 SwiftUI2 之后,AppDelegate就不再存在了,我现在如何才能获得视图?

标签: swiftmacosswiftui

解决方案


请参阅我的评论以参考如何设置应用程序委托(然后您将可以访问),但是您也可以通过 直接从窗口查看内容NSApp,例如

NSApp.mainWindow?.contentView

或者

NSApp.keyWindow?.contentView

取决于您的 Windows 配置。


推荐阅读