我有以下NSWindowController
:
import Foundation
import Cocoa
extension NSImage.Name {
static let skyflokLogo = NSImage.Name("skyflokLogo")
}
class LoginWindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
}
@IBAction func cancelLogin(_ sender: NSButton) {
print("Jones")
}
@IBAction func confirmLogin(_ sender: NSButton) {
print("lol")
}
}
我按这样打开窗口:
static func loadLoginWindow() -> NSWindowController {
let win = LoginWindowController(windowNibName: NSNib.Name("LoginWindow"))
win.showWindow(self)
return win
}
并将其存储在AppDelegate类中:
@IBAction func loginFunction(_ sender: NSMenuItem) {
print("TEST")
testCtrl = UIHelpers.loadLoginWindow()
}
窗口中包含的组件可以在这里看到:
我的问题是窗口按原样打开,但我的IBAction
函数不起作用,我无法通过控制窗口拖动来创建IBOutlet
。有人可以指导我文档或帮我解决这个问题吗?
答案 0 :(得分:1)
您需要保留您的LoginWindow(我个人建议将“Controller”附加到类名称)实例。否则,只要loadLoginWindow()
结束,实例就会消失,因此无法执行IBActions。