代码之家  ›  专栏  ›  技术社区  ›  Lars Nielsen

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

  •  0
  • Lars Nielsen  · 技术社区  · 8 年前

    我有以下几点 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 回复  |  直到 8 年前
        1
  •  3
  •   1024jp    8 年前

    您需要在某个地方保存LoginWindow(我个人建议在类名后面附加“Controller”)实例。否则,实例将在 loadLoginWindow() 已结束,因此无法执行iActions。