单击时阻止NSMenu创建同一NSWindow的多个实例

dja*_*o-d 3 macos cocoa nsmenu nswindow

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

Mar*_*k H 7

  1. 选择目标窗口控制器
  2. 单击属性检查器并在Presentation"Single"而不是"Multiple"下选择

单窗口实例


小智 5

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

添加到您的班级:

lazy var testViewcontroller = TestViewController(nibName: "TestWindow", bundle: nil)
lazy var testWindow = NSWindow(contentViewController: testViewcontroller)
Run Code Online (Sandbox Code Playgroud)

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

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