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

问题描述 投票:0回答:1

我已在AppDelegate中实例化并初始化了NSDatePicker的子类-> applicationDidFinishLaunching,并覆盖了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
    }
}

The ViewController:

class ViewController: NSViewController, NSWindowDelegate{

var alarmIVDatePicker: AlarmIVDatePicker!


override func viewDidLoad() {
    super.viewDidLoad()

    alarmIVDatePicker = AlarmIVDatePicker()
    alarmIVDatePicker.viewController = self


}

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

swift instance mousedown nsdatepicker
1个回答
0
投票

好。您可以按照以下步骤进行跟踪。将此代码添加到您的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方法中设置断点,则会在您未曾期望的地方调用它们的时间和地点。

© www.soinside.com 2019 - 2024. All rights reserved.