2013-10-02 48 views
0

可可绑定,KVC和KVO开始让我头疼。我想要做的就是将NSTextField的值绑定到我的视图控制器的属性值。有人能告诉我我要去哪里吗?任何帮助将不胜感激。以下是我正在进行的简化版本。为什么我的简单Cocoa绑定不起作用?

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

根据IB没有“stringValue的”为NSTextField只是一个结合 '价值' 约束力,除非你正在用代码设置你的UI,最简单的事情就是使用IB来绑定。

在xib文件中选择NSTextField。然后在右侧的实用程序区域中选择绑定选项卡。列出的第一个绑定应该是value,展开它。从弹出菜单中选择“File's Owner”作为绑定对象。 Xcode将为您输入self到模型关键路径字段中,只需在该字段的末尾添加.colorSpaceName并按回车即可。

如果您确实必须在代码中进行绑定,请将@"stringValue"更改为@"value",并确保您的插座已连接到IB。

注意:如果您要在代码中创建UI,则不需要声明任何元素为IBOutlet,因为该和IBAction只是IB知道要注意哪些属性和方法的关键字。

相关问题