gpt4 book ai didi

cocoa - 选择多个项目时禁用 NSButton - Cocoa Bindings

转载 作者:行者123 更新时间:2023-12-03 16:51:11 25 4
gpt4 key购买 nike

当在连接到 NSArrayControllerNSTableView 中选择多个项目时,我想禁用 NSButton。我知道当没有选择任何内容时我可以轻松禁用按钮(绑定(bind)到 @count),但我不知道如何扭转这一点,以便 @count 必须== 1 已启用。

我正在使用 Swift,但我对最好的方法比特定于语言的实现更感兴趣(除非在这种情况下 Swift 和 Objective C 之间的差异很大)。

如果选择包含多行,如何使用 Cocoa Bindings 禁用 NSButton

最佳答案

  • 我们假设包含 TableView 的类名为 tableViewController
  • 声明属性 selectionIndexestableViewController .

    目标-C:

    @property NSIndexSet *selectionIndexes;

    swift :

    dynamic var selectionIndexes = NSIndexSet()
  • 绑定(bind) Selection Indexes TableView 的属性。

  • tableViewController添加这两个方法

    目标-C:

    + (NSSet *)keyPathsForValuesAffectingEnableButton
    {
    return [NSSet setWithObject:@"selectionIndexes"];
    }

    - (BOOL)enableButton
    {
    return self.selectionIndexes.count < 2;
    }

    swift :

    override class func keyPathsForValuesAffectingEnableButton(key : String) -> Set<String> {
    return Set<String>(["selectionIndexes"])
    }

    func enableButton() -> Bool
    {
    return selectionIndexes.count < 2
    }

    keyPathsForValuesAffecting<key>是一种轻松实现键值观察器的方法。

  • 现在绑定(bind)Enabled按钮的属性为enableButtontableViewController .

如果您使用的是阵列 Controller ,请绑定(bind) Selection Indexes TableView 的 selectionIndexes阵列 Controller 和 Selection Indexes阵列 Controller 的 selectionIndexestableViewController .

关于cocoa - 选择多个项目时禁用 NSButton - Cocoa Bindings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com