【问题标题】:How to find out what object an NSControl is bound to via cocoa bindings如何通过可可绑定找出 NSControl 绑定到的对象
【发布时间】:2015-09-20 23:13:49
【问题描述】:

我将NSTextField 子类化,以便用户可以使用向上和向下光标键递增/递减整数值。它通过其委托工作正常,但通过setIntegerValue: 设置用户界面状态不会更新通过可可绑定绑定的底层值。

我需要更新模型而不是更新控件,所以我需要找到控件绑定到的对象以及使用的关键路径。

我在任何地方都找不到如何做到这一点,所以我重载了我的 NSTextField 子类的 - bind:toObject:withKeyPath:options: 方法,在那里建立了绑定并且我可以看到观察到的对象及其关键路径,但我肯定是在复制控件中某处已经可用的信息..

有没有一种方法可以通过 Cocoa 绑定来获取控件绑定到的对象和键路径,而无需像这样到处乱窜?

我将不胜感激。

【问题讨论】:

    标签: objective-c macos cocoa cocoa-bindings


    【解决方案1】:

    是的,有更好的方法:

    - (NSDictionary *)infoForBinding:(NSString *)binding
    

    包含绑定信息的字典,如果绑定未绑定,则返回 nil。该字典包含三个键/值对:NSObservedObjectKey:对象绑定、NSObservedKeyPathKey:键路径绑定、NSOptionsKey:带有选项及其绑定值的字典。

    【讨论】:

    • 谢谢。我已经看到了这一点,但没有意识到我可以通过 @"value" 来获得正确的绑定。现在工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 2011-10-27
    • 2013-04-11
    • 2017-05-27
    • 2014-11-28
    相关资源
    最近更新 更多