Подкласс события NSDatePicker mouseDown изменяет экземпляр datePicker - PullRequest
0 голосов
/ 05 ноября 2019

Я создал и инициализировал подкласс NSDatePicker в AppDelegate -> applicationDidFinishLaunching и переопределил mouseDown (с событием: NSEvent) в подклассе datePicker. Когда я нажимаю кнопку мыши в функции datePicker и отключаю ее переопределенную функцию mouseDown, экземпляр не является тем, который я создал в applicationDidFinishLaunching, и поэтому не инициализируется.

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

DatePicker:

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


}

Я ожидал, что смогу получить доступ к значениям, которые я установил, но экземпляр не тотЯ создал и все значения ноль

1 Ответ

0 голосов
/ 06 ноября 2019

Хорошо. Вот что вы можете сделать, чтобы отследить это. Добавьте этот код в ваш 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 методов, вы поймете, когда и где они вызываются там, где вы не ожидали.

...