0

Cocoa 绑定、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
4

1 回答 1

1

根据 IB 的说法,NSTextField只有“值”绑定没有“字符串值”绑定。除非您在代码中设置 UI,否则最简单的方法是使用 IB 进行绑定。

NSTextField在xib文件中选择。然后在右侧的实用程序区域中选择绑定选项卡。列出的第一个绑定应该是value,展开它。从弹出菜单中选择“文件的所有者”作为要绑定的对象。Xcode 会self为您输入 Model Key Path 字段,只需添加.colorSpaceName到字段的末尾并按回车即可。

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

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

于 2013-10-07T18:34:31.720 回答