2010-04-03 3 views
1

저는 큐브와 함께 석영 성분을 가지고 있으며, X/Y/Z 회전 입력이 게시되었습니다. Interface Builder에서 이전의 Quartz Composition이로드 된 QCViewQCPatchController을 만들었습니다. QCView에서 패치 컨트롤러가 바인드되고 회전 게시 된 포트가 NSSlider 3 개로 바인드되므로 NSSlider's 값을 변경하면 큐브가 회전합니다.코드 석영 성분과의 상호 작용

이 모든 것이 제대로 작동하지만 XCode의 App Delegate에서 큐브의 회전 값을 변경하고 싶습니다. 마우스를 사용하여 슬라이더를 직접 변경할 때와 같이 큐브에 적용되지 않는 IBOutlet을 사용하여 NSSliders의 값을 변경하려고 시도했지만이 변경 사항은 큐브에 적용되지 않습니다.

CQPatchController을 통해 Input_Ports.value을 액세스하고 변경하려면 어떻게해야합니까?

정말 고맙습니다. 정말 도움이 필요합니다.

답변

0

사실 아주 간단합니다! 패치 컨트롤러는 KVC의 setValue:forKeyPath:을 그대로 사용합니다. 원하는 키 경로는 아마도 patch.Input_Ports.value과 같습니다.

패치 컨트롤러에 연결하려면 앱 대리인에 콘센트를 추가해야합니다. 응용 프로그램 대리인의 .h 파일에 IBOutlet NSObjectController* patchController 인스턴스 변수를 추가하십시오.

IBOutlet은 컴파일러를 위해 아무 것도하지 않지만 Interface Builder에 거기에 콘센트가 있다는 신호를 보냅니다. 일단 그 라인을 추가하면 인터페이스 빌더로 돌아가서 앱 델리게이트에서 패치 컨트롤러로 드래그하여 controlController 콘센트를 .nib 파일의 특정 인스턴스에 연결합니다.

(이 QCPatchController에 대한 .H 파일은 없지만 NSObjectController의 서브 클래스, 그래서 당신이 안전하게 등을 선언 할 수 있습니다.) 내가 뭘하려하지만 어떻게 내가 패치 컨트롤러 인스턴스에 액세스 할

+0

는 선언 인터페이스 빌더에서, XCode의 앱 대리인 코드에서? 나는 이것이 초보자 일 수 있다는 것을 알고 있지만 실제로는 ... 답장을 보내 주셔서 감사합니다! –

+0

푸프, 콘센트에 대한 정보를 추가했습니다. 다음 번 문구와 제목을 사용하여 문제가있는 특정 부분에 초점을 맞추십시오. (Quartz Composer와 관련된 것이 아니기 때문에 이번에는 "프로그래밍 방식으로 nib 파일에서 인스턴스에 액세스하기"가 더 좋았을 것입니다. 또는 IBOutlet 추가하기를 알고 있다면) – andyvn22

+0

예, 필요합니다. 그 instanciation의 종류가 가능했다는 것을 알고, 나는 IBAIL 메카니즘을 알고 있지만, XCode는 QCPatchController 클래스를 인식하지 못한다. 그리고 나는 무엇을 가져올 지 모른다. #import 와 기타 알려진 라이브러리/프레임 워크를 사용해 보았습니다. 수입자는 무엇입니까? –