0

나는 NSWindow (이름이 IMWindow)이라는 하위 클래스로 내 자신의 속성을 만들었습니다. 이제 NSTextField 값을 IMWindow 속성 중 하나에 바인딩하고 싶습니다. NSUserDefaults 컨트롤러 또는 앱 대리인이 가능하다는 것을 알고 있습니다. 그러나 NSWindow에 대한 옵션을 제공하지 않습니다.Interface Builder에서 NSWindow의 속성에 값을 바인딩하는 방법은 무엇입니까?

임의의 개체에 값을 바인딩 할 수 있는지 확인하고 싶습니다.

스크린 샷 :

enter image description here

코드 :

@interface IMMainWindow() 
@property (nonatomic, strong) NSString *line1Text; 
@end 

OS X 용 인터페이스 빌더에있는 사전 재료를 찾기 어려운 것입니다 : -/

답변

2

코코아가 MVC (Model-View-Controller)를 사용을 무늬. 텍스트 필드의 값을 창 자체가 아닌 컨트롤러에 바인딩해야합니다. NSWindow 하위 클래스를 만들지 마십시오. NSWindowController 하위 클래스를 XIB (창 컨트롤러가 파일 소유자가되도록)로 만든 다음 line1Text 속성을 NSWindowController 하위 클래스에 추가하고 텍스트 필드를 XIB의 파일 소유자 개체에 바인딩합니다.

0

나는 indragie's answer에 동의합니다. 즉, 당신이 원하는 것을 할 수 있습니다.

먼저 IMWindow.xib의 맞춤 클래스를 설정해야합니다. 이 완료되면, 당신은 당신의 NSTextField이에 대한 속성을 만들 필요가 Xcode interface builder

이렇게하려면 왼쪽에있는 창을 선택하고 파란색 버튼을 클릭 오른쪽에있는 아이콘을 강조하고 클래스 이름을 입력 텍스트 필드를 선택하고 상단 (활과 버튼이있는 중간 아이콘)을 클릭하여 수행됩니다. 오른쪽에 강조 표시된 파란색 아이콘 (화살표가있는 원)을 선택하십시오. 이제 "New Reference Outlet"라인의 원을 누르고 마우스를 IMWindow의 헤더 파일로 드래그하십시오. Xcode interface builder

그게 전부 야! NSTextField은 이제 IMWindow 클래스에 바인딩됩니다.

하지만 기억하십시오. 대신 NSWindowController을 사용해야합니다.

+0

고마워요! 콘센트를 바인딩하는 방법을 알고 있지만 값 바인딩에 대해서는 알지 못합니다 (iOS에는 능숙하지만 OS X에 익숙하지 않기 때문에). 내가 임의의 객체에 바인딩 할 수 없다는 의미입니까? 객체에 대한 제한이 있습니까? – HKTonyLee

+0

아, 미안. 나는 당신의 문제를 오해했습니다. 이것을 시도 : http://stackoverflow.com/a/14079680/1118969? 'NSTextField'가 선택되었을 때 오른쪽에서 두번째 아이콘을 선택하면'Value' 아래에 많은 바인딩 설정이 있음을 알 수 있습니다. –

관련 문제