2013-10-02 8 views
0

Какао-привязки, 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

Согласно IB нет «stringValue» обязательным для NSTextField просто 'значения' связывания Если вы настраиваете свой пользовательский интерфейс в коде, проще всего использовать IB для привязок.

Выберите NSTextField в файле xib. Затем перейдите на вкладку привязок в области утилит справа. Первым обязательным перечислением должно быть value, развернуть его. Из всплывающего меню выберите «Владелец файла» в качестве объекта для привязки. Xcode введите self в поле «Путь к ключу модели», просто добавьте .colorSpaceName в конец поля и нажмите «Возврат».

Если вы действительно должны сделать привязку в коде, то смените @"stringValue" на @"value" и убедитесь, что ваша розетка подключена в IB.

Примечание. Если вы создаете пользовательский интерфейс в коде, нет необходимости объявлять какие-либо элементы как IBOutlet, так как IBAction - это просто ключевые слова для IB, чтобы узнать, какие свойства и методы следует обратить внимание.