单击

时间:2015-08-31 01:45:20

标签: macos cocoa nswindow nsmenu

我有一个简单的Cocoa应用程序,在单击NSMenu项目时启动NSWindow。我通过segue启动窗口。问题是,当我多次单击菜单项时,它会不断创建新窗口,而不是将现有窗口置于前台。我该如何防止这种行为?提前致谢。

2 个答案:

答案 0 :(得分:7)

  1. 选择目标窗口控制器
  2. 点击属性检查器并在演示文稿" Single"下选择。而不是"多个"
  3. Single window instance

答案 1 :(得分:5)

如果您的 Window 没有使用 Storyboard,假设您为此 .xib 创建了单独的 .xib 和 ViewController,您可以使用以下方法:

添加到您的班级:

lazy var testViewcontroller = TestViewController(nibName: "TestWindow", bundle: nil)
lazy var testWindow = NSWindow(contentViewController: testViewcontroller)

然后,将其添加到调用窗口的方法中:

testWindow.makeKeyAndOrderFront(nil)
NSApp.activate(ignoringOtherApps: true) // will help your window to open on top of others