簡體   English   中英

嘗試將NSPopupButton的`enabled`屬性綁定到復選框的狀態

[英]Trying to bind a NSPopupButton's ```enabled``` property to a checkbox's state

使用可可粉綁定,我希望根據是否選中復選框來啟用或禁用彈出按鈕。

我以編程方式將復選框和彈出窗口添加到這樣的堆棧視圖中:

  private func addCheckBoxes() {
        for period in String.BuildTimePeriod.allCases {
            let checkbox = NSButton(checkboxWithTitle: period.rawValue.capitalized, target: self, action: nil)
            checkbox.bind(.value, to: NSUserDefaultsController.shared, withKeyPath: "values.\(period.defaultsBoolKey.rawValue)", options: [NSBindingOption.continuouslyUpdatesValue: true])
            stackView.addArrangedSubview(checkbox)
            addPopUpToCheckbox(checkbox, period: period)
        }
    }

    private func addPopUpToCheckbox(_ checkbox: NSButton, period: String.BuildTimePeriod) {
        let popUp = NSPopUpButton(frame: checkbox.frame, pullsDown: false)
        let timeBlocks = String.TimeBlock.allCases.map() { $0.rawValue.capitalized }
        popUp.addItems(withTitles: timeBlocks)
        popUp.bind(.selectedValue, to: NSUserDefaultsController.shared, withKeyPath: "values.\(period.rawValue)", options: [NSBindingOption.continuouslyUpdatesValue: true])
        popUp.bind(.enabled, to: checkbox, withKeyPath: "state", options: [NSBindingOption.continuouslyUpdatesValue : true])
        stackView.addArrangedSubview(popUp)
    }

綁定在控制器的初始負載上起作用,但是popups啟用狀態不會動態更改。 想知道是否有人可以提供任何指導。

感謝@Willeke,我意識到這是因為我只是在引用"state" ,而不是按鈕所需要的"cell.state"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM