Привязка обратного вызова к NSButton - PullRequest
0 голосов
/ 07 июня 2019

Я хотел бы создать модальное диалоговое окно, которое содержит несколько NSViews, где во время компиляции неизвестно, сколько представлений отображать. Я смог заполнить окно представлениями, но две проблемы меня удерживают. Один получает обратные вызовы, когда пользователь взаимодействует с этими представлениями. Другой пост будет посвящен другой проблеме.

Я использую раскадровку для создания окна с кнопками «ОК» и «Отмена», затем добавляю новые метки, кнопки и поля к содержимому окна.

Вот основные части моего кода:

class ParmViewController: NSViewController {

    static func showParmDialog()
    {
        let storyboard = NSStoryboard(name: "Main", bundle: nil)
        let windowController = storyboard.instantiateController(withIdentifier: "ParmViewController") as! NSWindowController
        let window = windowController.window!
        let viewController = window.contentViewController as! ParmViewController
        viewController.setup()
        let application = NSApplication.shared
        application.runModal(for: window)
        window.close()
    }

    var parmState = false

    func setup() {
        let button = NSButton()
        button.setButtonType( NSButton.ButtonType.switch )
        button.state = parmState
        button.frame = NSRect( x: 150, y: y, width: 100, height: 26 )
        view.addSubview( pView )
        button.action = #selector(parmButtonPushed(_:))
    }

    @objc func parmButtonPushed( _ sender: Any ) {
        Utils.trace( "parm button pushed" )
    }

    @IBAction func okButtonPushed(_ sender: Any) {
        parmstate = ( button.state == NSControl.StateValue.on )
        NSApplication.shared.stopModal()
     }

}

Кнопка обычно появляется в окне, и parmState устанавливается правильно при нажатии кнопки OK. Я просто не получаю обратного вызова при нажатии кнопки. Я не смог найти ни одного примера кода в Интернете, поэтому я почти уверен, что мой код #selector неверен. Как я могу получить этот обратный звонок?

...