ale*_*ntd 3 static-methods key-value-coding cocoa-bindings
如果我有一个像这样的方法:
@interface CharacterSet
+ (NSArray *)allCharacterSets;
@end
Run Code Online (Sandbox Code Playgroud)
我可以使用Cocoa绑定绑定它吗?
我正在尝试将NSComboBox的内容值连接到它.当我进入CharacterSet.allCharacterSetsIB中的"模型密钥路径"字段时,它不起作用,说:
[addObserver:forKeyPath:@"CharacterSet.allCharacterSets"选项:0x0上下文:0x200275b80]被发送到与"CharacterSet"属性不符合KVC的对象.
我不知道还有什么可以尝试的.目前我必须allCharacterSets在我的自定义窗口控制器(或自定义窗口)中将返回值存储到ivar中以使其工作,这似乎是我不应该采取的额外步骤.
我正在研究一个巨大的应用程序,你提到的额外步骤对我来说真是太痛苦了.所以我开发了一个处理类方法绑定的小代理类.
首先,我添加了一个小代理类
@implementation INClassProxy
- (id)valueForUndefinedKey:(NSString *)key {
return NSClassFromString(key);
}
@end
Run Code Online (Sandbox Code Playgroud)
然后为NSApplication添加了一个类别访问器
- (id)classProxy {
static INClassProxy *proxy = nil;
if (proxy == nil)
proxy = [[INClassProxy alloc] init];
return proxy;
}
Run Code Online (Sandbox Code Playgroud)
(其实我已将此添加到我的应用程序委托,并实现应用:delegateHandlesKey: )
现在,您已准备好使用keyPath将类方法绑定到Application对象,即使在接口构建器中也是如此@"classProxy.CharacterSet.allCharacterSets".
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |