gpt4 book ai didi

swift - 使用菜单栏在 OS X 应用程序中创建新窗口

转载 作者:行者123 更新时间:2023-11-30 12:02:16 25 4
gpt4 key购买 nike

我制作了一个非常简单的带有两个窗口的 Mac 应用程序。我是一名 iOS 开发人员,所以我非常熟悉 swift,但是 iOS 应用程序中的一些 UI 元素在构建 OS X 应用程序时不能很好地转换。我想利用屏幕顶部的菜单栏。我想单击默认文件下的“新建”,然后打开我的初始 VC 的新窗口。我怎么做?

我读过很多帖子,他们告诉我构建一个新的菜单栏,但我觉得应该有一种更简单的方法来使用默认的菜单栏。即使我已经成功创建了一个 socket 或为新按钮添加了一个操作,我如何调用特定的 VC?我可以像在 iOS 中那样实例化 VC 吗?我只想要最简单的方法来做到这一点。

这就是我用来展示新窗口的内容:

let storyboard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil)
let myWindowController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "LoginVC")) as! LoginViewController

if let window = NSApplication.shared.mainWindow
window.contentViewController = myWindowController //as! NSWindowController // just swap
}

最佳答案

默认情况下,“新建”菜单项会将 newDocument(_:) 消息发送给“第一响应者”。如果沿responder chain有任何物体实现它,则菜单项将被启用,否则菜单项将被禁用。

要回复此消息,您可以:

  • 在响应者链中的某个位置(可能在其末尾的某个位置,例如应用程序委托(delegate)中)实现 func newDocument(_ sender: Any?) 。在 document-based application NSDocumentController已经可以处理这个问题了。
  • 为“新建”菜单项设置您自己的操作和目标,以调用特定对象上的另一个方法以使其创建并显示新窗口。对于基于用户在应用程序中所处位置的上下文操作(例如复制或粘贴),这不起作用

关于swift - 使用菜单栏在 OS X 应用程序中创建新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47063816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com