2011-08-14 8 views
2

NSWindowController의 하위 클래스에서 사용자 지정 바인딩을 노출하려고합니다. 나는 서브 클래스에 다음 코드를 추가 :+ exposeBinding not working

+(void)initialize { [self exposeBinding:@"customBinding"]; }

그런 다음, IB, 나는 내 서브 클래스의 객체 인스턴스가 있습니다. 하지만, 커스텀 NSWindowController의 바인딩을 보면 'customBinding'이 노출 된 것을 볼 수 없습니다. 내가 놓친 게 있니?

답변

3

이 메소드는 레거시 Interface Builder 플러그인에만 사용됩니다. Xcode 4는 공식적으로 플러그인을 지원하지 않습니다. -bind:toObject:withKeyPath:options:을 사용하여 코드에서 이러한 바인딩을 만들었습니다. "원하는대로 입력하십시오"부분은 바인딩하는 키 경로에만 적용되며 바인딩 이름 자체에는 적용되지 않습니다.

+0

그래서 Xcode4는 더 이상 사용자 지정 바인딩을 지원하지 않습니다? 그렇다면 왜이 함수는 가치가 떨어지지 않습니까? – David

+0

애플이 아직 결정하지 않았을 수도 있습니다. 아마 우리는 Xcode 4에 대한 업데이트에서 플러그인 지원을받을 것입니다 (그렇다고는 생각하지 않지만). 또는 새로운 LLVM 기반 인덱싱 시스템을 사용하면 실제로 코드를 실행하지 않고도 이론적으로 사용자 지정 바인딩 정보를 수집 할 수 있습니다. 솔직히 말해서, 나는 단지 그들이 이것을 반영하기 위해 문서를 갱신하려고 노력하지 않았다고 생각한다. – gcbrueckmann

+0

Xcode 4는 플러그인을 지원하지 않습니까? 잘못된 위치 : http://www.blackdogfoundry.com/blog/creating-an-xcode4-plugin/, http://www.inline-studios.com/developer/articles/1-Xcode_4_Interface_Builder_Plugins/, http :// /cocoanaut.com/useful-xcode-4-plugins/. 몇 개의 사이트 이름을 지정하십시오. –

0

IB 팔레트/플러그인을 만드는 경우에만 해당됩니다. Cocoa Bindings Programming Topics에서 :

다른 방법 - 클래스 방법 exposeBinding:와 인스턴스 메소드 exposedBindingsvalueClassForBinding: 만 인터페이스 빌더 팔레트의 리디렉션 유용합니다.

바인딩을 설정할 때 원하는 키 경로를 입력하기 만하면됩니다. 그들은 IB에서 노출 될 필요가 없습니다.

+0

해당 페이지는 2 세이며 Xcode 4의 IB 플러그인에 대해서는 언급하지 않습니다. 또한, "원하는 키 경로를 입력하십시오."라는 의미가 무엇인지 확실하지 않습니다. 어디에? 프로그래밍 방식으로 바인딩하지 않으려 고하지만 IB를 통해 IBOutlets를 노출 할 필요가 없습니다. – David

+0

키 - 값 코딩 호환 접근 자 메서드를 사용하는 모든 속성에 바인딩 할 수 있으므로 바인딩을 노출 된 것으로 특별히 표시하지 않아도됩니다. '@syntence'를 사용하여 생성 된 구현물로'@property' 선언을 생성했다면 KVC 호환 접근자가 있습니다. 바인딩은 IBOutlets과 아무 관련이 없습니다. –