cocoa - NSWindow 打开,但按钮不起作用,并且我无法创建 IBOutlet

标签 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。有人可以指导我查看文档或帮助我解决这个问题吗?

最佳答案

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

关于cocoa - NSWindow 打开,但按钮不起作用,并且我无法创建 IBOutlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49130940/

相关文章:

ios - swift 4,核心数据: error: Failed to load model named textTabelView

swift - 如何根据另一个 row.value 更新 row.value

ios - Swift indexPathForSelectedRow 从 subview 返回 nil

ios - WKWebView 和 Amazon Affiliate 图片 src

cocoa - 单击按钮时未调用 IBAction

ios - 如何在 Swift 4 中设置 QRCode 版本

objective-c - NSImageView 与 NSPopover 中的 NSTextField 相交时的动画伪像

ios - 在我的项目中安装 pod 库时出现问题

objective-c - 如何访问cocoa中的应用程序包内容文件夹?

objective-c - 如何暂停我的应用程序直到提交崩溃报告?