Я хотел бы создать модальное диалоговое окно, которое содержит несколько 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 неверен. Как я могу получить этот обратный звонок?