可可绑定,KVC和KVO开始让我头疼。我想要做的就是将NSTextField的值绑定到我的视图控制器的属性值。有人能告诉我哪里出错了吗?任何帮助将不胜感激。下面是我正在进行的简化版本。
MyViewController.h:
#import <Cocoa/Cocoa.h>
@interface MyViewController : NSViewController
@property NSString *colorSpaceName;
@property IBOutlet NSTextField *colorSpaceLabel;
@end
MyViewController.m:
#import "MyViewController.h"
@implementation MyViewController
@synthesize colorSpaceName;
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
{
// ...
if ( self ) {
[self.colorSpaceLabel bind:@"stringValue"
toObject:self
withKeyPath:@"colorSpaceName"
options:nil];
}
// ...
}
@end
答案 0 :(得分:0)
根据IB,NSTextField
没有'stringValue'绑定只是一个'值'绑定。除非你在代码中设置所有UI,最简单的方法是使用IB进行绑定。
在xib文件中选择NSTextField
。然后在右侧的实用程序区域中选择绑定选项卡。列出的第一个绑定应为value
,展开它。从弹出菜单中选择“File's Owner”作为要绑定的对象。 Xcode会为您输入self
到模型密钥路径字段,只需将.colorSpaceName
添加到字段的末尾,然后按返回。
如果您真的必须在代码中进行绑定,请将@"stringValue"
更改为@"value"
,并确保您的插座已在IB中连接。
注意:如果您在代码中创建UI,则不需要将任何元素声明为IBOutlet
,因为IBAction
只是IB的关键字,以了解要支付的属性和方法注意。