我想构建一个模态对话框窗口,其中包含许多NSView,在编译时不知道要显示多少个视图。我已经能够用视图填充窗口,但是有两个问题使我停滞不前。一种是在用户与这些视图交互时获取回调。另一篇文章将解决另一个问题。
我使用情节提要创建带有“确定”和“取消”按钮的窗口,然后在窗口的内容中添加新的标签,按钮和字段。
这是我的代码的重要组成部分:
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。单击按钮时,我只是没有得到回调。我无法在网络上找到任何示例代码,所以我很确定#selector代码不正确。我如何获得该回调?