NSWindow打开,但按钮不起作用,我无法创建IBOutlets

时间:2018-03-06 12:32:17

标签: cocoa swift4

我有以下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()
}

窗口中包含的组件可以在这里看到:

enter image description here

我的问题是窗口按原样打开,但我的IBAction函数不起作用,我无法通过控制窗口拖动来创建IBOutlet。有人可以指导我文档或帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您需要保留您的LoginWindow(我个人建议将“Controller”附加到类名称)实例。否则,只要loadLoginWindow()结束,实例就会消失,因此无法执行IBActions。