我目前正在尝试构建一个菜单栏应用。因此我需要一个NSWindowController作为登录字段。按下菜单项时必须可以打开这个NSWindowController,当用户点击取消时也可以关闭该窗口。
我使用showWindow(self)
和NSApp.hide(self)
,但这对我不起作用。那么有谁知道我可以尝试什么?
答案 0 :(得分:1)
假设您正在使用Storyboard
NSWindowController
,取消选中该窗口的visible at launch
。在AppDelegate
中创建一个属性windowController
var windowController : NSWindowController!
在AppDelegate
中创建IBAction
。
在动作中使用
获取主故事板let mainStoryBoard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil)
然后实例化并分配窗口控制器(标识符必须与故事板标识符匹配)
windowController = mainStoryBoard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "Login")) as! NSWindowController
获取关联的视图控制器(LoginController
是视图控制器的自定义类)
let loginController = windowController.window!.contentViewController as! LoginController
显示主窗口
windowController.showWindow(self)
在Interface Builder中,将NSMenuItem
连接到First Responder
(红色多维数据集),然后连接到创建的IBAction
。
您可以使用红色close
按钮关闭窗口,也可以添加自定义逻辑。
如果您使用XIB创建NSWindowController
子类并使用windowController = MyWindowController(window: nil)
加载XIB,请使用NSApp.activate(ignoringOtherApps: true)
激活您的应用,并使用let controllerWindow = windowController.window!
获取相关窗口并显示窗口与controllerWindow.makeKeyAndOrderFront(self)
答案 1 :(得分:0)