NSWindowController 如何模态显示窗口?
在苹果的开发者文档中,有一个show方法
func showWindow(_ sender: Any?)
然而此方法,并不会模态显示。
比如,在某些应用中,当检测到需要用户登录的行为时,我们就是需要登录注册的窗口以模态的形式出现,该怎么办呢?
我们可以重写 showWindow方法,调用应用的模态显示窗口的方法:
override func showWindow(_ sender: Any?) {
NSApp.runModal(for: self.window!)
}
runModal方法,必然要和stopModal成对使用,否则的话,关闭之后的其他窗口将无法正常使用。
我们可以在window即将关闭的时候,结束此窗口的模态状态。
首先我们要在窗口已经加载的时候,给窗口设置代理,然后实现相关的代理协议。
extension SignWindowController:NSWindowDelegate {
func windowWillClose(_ notification: Notification) {
NSApp.stopModal()
}
}
网友评论