2013-10-02 3 views
0

코코아 바인딩, KVC 및 KVO가 머리를 다 치기 시작합니다. 내가하고 싶은 것은 내 View Controller의 프로퍼티 값에 바인드 된 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에 따르면 값 'NSTextField 단지에 대한 바인딩 "stringValue'전혀 없다 '결합하지 않는 한 가장 쉬운 방법은 바인딩에 IB를 사용하는 것입니다.

xib 파일에서 NSTextField을 선택하십시오. 그런 다음 오른쪽의 유틸리티 영역에서 바인딩 탭을 선택하십시오. 나열된 첫 번째 바인딩은 value이어야하며 확장해야합니다. 팝업 메뉴에서 "File 's Owner"를 바인드 할 객체로 선택하십시오. Xcode는 모델 키 경로 필드에 self을 입력하고 .colorSpaceName을 필드 끝에 추가하고 return 키를 누릅니다.

코드에서 바인딩을 수행해야한다면 @"stringValue"@"value"으로 변경하고 콘센트가 IB에 연결되어 있는지 확인하십시오.

참고 : 코드에서 UI를 만드는 경우 IBOutlet으로 요소를 선언 할 필요가 없으므로 IBAction은주의해야 할 속성과 메서드를 IB가 알기위한 키워드 일 뿐이므로

관련 문제