Доступ к сенсорной панели из внешнего класса - PullRequest
0 голосов
/ 29 октября 2018

Я хотел переместить виджет сенсорной панели таймера на панель управления справа. Я нашел код, который может сделать это через какой-то частный API, но я не могу выяснить, как подключить к нему мой windowController.

Вот мой оконный контроллер

import Cocoa

class WindowController: NSWindowController {

    @IBOutlet var touchButton: NSButton!
    @IBOutlet var touchbar: NSTouchBar!
    var delegate: NSTouchBarDelegate?

    var timer = Timer();

    override func windowDidLoad() {
        super.windowDidLoad()

        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
    }

    @IBAction func startTimer(_ sender: Any) {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateTimer), userInfo: nil, repeats: true);
    }

    @objc func updateTimer() {
        touchButton.title = TimeHandler().convertTimeDiffToString(timeDiff: TimeHandler().calcTimeDiff(currentTime: TimeHandler().getCurrentTimeInSeconds()));
    }
}

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

import Cocoa

class TouchBarController: NSObject, NSTouchBarDelegate {

    static let shared = TouchBarController()
    let touchBar = NSTouchBar()

    func setupControlStripPresence() {
        DFRSystemModalShowsCloseBoxWhenFrontMost(false)
        let item = NSCustomTouchBarItem(identifier: touchButton)
        item.view = NSButton(image: #imageLiteral(resourceName: "Strip"), target: self, action: #selector(touchbar))
        NSTouchBarItem.addSystemTrayItem(item)
        DFRElementSetControlStripPresenceForIdentifier(touchButton, true)
    }
}
...