首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用菜单栏在OS应用程序中创建一个新窗口

使用菜单栏在OS应用程序中创建一个新窗口
EN

Stack Overflow用户
提问于 2017-11-01 21:16:50
回答 1查看 1.3K关注 0票数 0

我制作了一个非常简单的带有两个窗口的mac应用程序。我是一个iOS开发人员,所以我非常熟悉iOS应用程序中的一些UI元素,但是在构建OS应用程序时,有些UI元素的翻译并不好。我想利用屏幕顶部的菜单栏。我想点击“新建”下的文件,这是默认的,并打开一个新的窗口,我的初始VC。我该怎么做?

我读过一堆帖子,他们告诉我要建立一个新的菜单栏,但我觉得应该有一个更容易的方式与菜单栏,在默认情况下。我如何调用一个特定的VC,即使我已经成功地创建了一个插座或添加了一个新按钮的动作?我能像我们在iOS中那样实例化VC吗?我只想要最简单的方法。

这就是我以前展示的新窗口:

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-01 21:53:59

默认情况下,“新建”菜单项将向“第一个响应者”发送newDocument(_:)消息。如果应答链上的任何对象实现了它,那么菜单项将被启用,否则菜单项将被禁用。

若要响应此消息,您可以:

  • 在响应链中的某个位置实现func newDocument(_ sender: Any?) (可能是在其末尾的某个地方,比如在应用程序委托中)。在基于文档的应用中,NSDocumentController已经可以处理这个问题了。
  • 为" new“菜单项设置您自己的操作和目标,以调用特定对象上的另一个方法,让它创建和显示新窗口。对于基于应用程序中用户所在位置的上下文操作(例如复制或粘贴),这将不起作用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47063816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档