Добавить кнопку для управления полосой Xcode Swift - PullRequest
0 голосов
/ 14 октября 2019

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

Я видел другую ветку по этому поводу, но ответ был неясен и дал мне ошибки и фатальную ошибку инструкции.

extension TouchBarController: NSTouchBarDelegate {

    static let shared = TouchBarController()
    @objc func setupControlStripPresence() {
        DFRSystemModalShowsCloseBoxWhenFrontMost(false)
        let item = NSCustomTouchBarItem(identifier: .controlStripItem)
        item.view = NSButton(image: #imageLiteral(resourceName: "StatusImage"), target: self, action: #selector(makeTouchBar))
        NSTouchBarItem.addSystemTrayItem(item)
        DFRElementSetControlStripPresenceForIdentifier(.controlStripItem, true)
    }

    override func makeTouchBar() -> NSTouchBar? {
        let touchBar = NSTouchBar()
        touchBar.delegate = self as NSTouchBarDelegate
        touchBar.customizationIdentifier = .touchBar
        touchBar.defaultItemIdentifiers = [.flexibleSpace, .weather, .battey, .time]
        return touchBar
    }

    func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItem.Identifier) -> NSTouchBarItem? {
        switch identifier {
        case NSTouchBarItem.Identifier.time:
            let timeLabel = NSCustomTouchBarItem(identifier: identifier)
            timeLabel.view = NSTextField(labelWithString: timeValue)
            return timeLabel
        case NSTouchBarItem.Identifier.battey:
            let batteryLabel = NSCustomTouchBarItem(identifier: identifier)
            batteryLabel.view = NSTextField(labelWithString: batteryValue)
            return batteryLabel
        case NSTouchBarItem.Identifier.weather:
            let weatherLabel = NSCustomTouchBarItem(identifier: identifier)
            weatherLabel.view = NSTextField(labelWithString: weatherValue)
            return weatherLabel
        default:
            return nil
        }
    }
}

Я получаю фатальную ошибку в строке, которая определяет item.view

...