NSDatePicker mouseDown事件的子类更改了datePicker实例



我已经在AppDelegate->applicationDidFinishLaunching中实例化并初始化了NSDatePicker的一个子类,并在datePicker子类中重写了mouseDown(带有事件:NSEvent(。当我在datePicker中按下鼠标按钮并插入其覆盖的mouseDown函数时,该实例不是我在applicationDidFinishLaunching中实例化的实例,因此没有初始化。

我曾尝试在不同的入口点创建实例,认为这可能是一个时间问题,但我一无所获。我没有主意,感觉有点虚弱。有什么帮助吗?

日期选择器:

import Cocoa
class AlarmIVDatePicker: NSDatePicker {
var viewController: ViewController!
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
}
override func acceptsFirstMouse(for event: NSEvent?) -> Bool {
return true
}
override func mouseDown(with event: NSEvent) {
let stop = 0
}
}

ViewController:

class ViewController: NSViewController, NSWindowDelegate{
var alarmIVDatePicker: AlarmIVDatePicker!

override func viewDidLoad() {
super.viewDidLoad()
alarmIVDatePicker = AlarmIVDatePicker()
alarmIVDatePicker.viewController = self

}

我希望我可以访问我设置的值,但实例不是我创建的实例,所有值都为零

好的。以下是你可以做些什么来追踪这件事。将此代码添加到您的AlarmIVDatePicker类:

override init(frame frameRect: NSRect) {
Swift.print("AlarmIVDatePicker being called here")
super.init(frame: frameRect)
}
convenience init() {
self.init(frame: .zero)
}
required init?(coder: NSCoder) {
Swift.print("hey, you DID drop this into a storyboard or XIB file!")
super.init(coder: coder)
}

如果您在这些init方法中设置断点,您将捕捉到它们在何时何地被调用,而您没有预料到。

相关内容

  • 没有找到相关文章

最新更新