2010-01-10 2 views
3

저는 코코아 바인딩을 사용하기 시작했습니다. 그리고 많은 문서를 읽은 후에도 기본 기능을 구현하는 데 어려움을 겪고 있습니다. 나는 그것을 잘못하고 있거나 아마 IB를 통해서 가능하지 않을 수도 있습니다.Basic Cocoa Bindings : IB의 메뉴에서 boolean을 토글합니다.

목표 : "가시성 켜기/끄기"라는 메뉴 항목을 사용하면 응용 프로그램 컨트롤러 (AppController)의 "가시성"이라는 부울 속성의 상태를 전환 할 수 있습니다. 나는 이것이 IB를 통해 완전히 가능해야한다고 생각합니다.

(참고 : CoreData 여기에 사용하지 않는) 내가 일 할 필요가 나는 내용 콘센트가 내의 AppController 클래스로 설정되어있어 NSObjectController을 가질 필요가 있다고 생각 무엇

. 그렇다면 Action Innovocation 바인딩을 사용해야한다고 생각합니다. 그러나 여기가 내가 곤경에 빠지게되는 곳이다.

컨트롤러 키를 선택해야합니까? Model Key Path가 my Boolean Property의 이름이어야합니까? 선택기 이름은 무엇이되어야합니까?

또는 바인딩 할 수있는 "toggleVisibility"라는 별도의 작업 방법을 설정해야합니까? 그렇게했다면 왜 바인딩이 아닌 표준 타겟/액션 연결을 사용하지 않을까요?

모든 입력/방향이 좋습니다.

답변

4

목표 : "가시성 켜기/끄기"라는 메뉴 항목을 사용하면 응용 프로그램 컨트롤러 (AppController)의 "가시성"이라는 부울 속성의 상태를 전환 할 수 있습니다.

목표가 실패한 이유를 알려줍니다.

목표에 대한 설명에서이 메뉴 항목을 명령, 동사 인 필수 문장 인 "가시성 전환"으로 설정한다고 말합니다. 하지만 that's not the right title for the menu item.

또한 Bindings를 사용하여 동사 메뉴 항목을 구현하는 것은 본질적으로 어렵습니다. Bindings가 작업에 대한 잘못된 도구이기 때문입니다. 바인딩은 UI의 속성을 노출하기위한 것입니다. 명령 수행을위한 것이 아닙니다.

올바른 제목이 올바른 바인딩 기반 솔루션에서 지원됩니다.

메뉴 항목의 올바른 제목은 간단히 "표시"입니다.

이 정보만으로는 진행 방법에 대한 힌트를 얻을 수 있습니다. 다른 것은 다음과 같습니다. 선택 항목이 표시되면 메뉴 항목에 체크 표시가 있어야합니다. 표시되지 않으면 메뉴 항목에 표시가 없어야합니다.

메뉴 항목의 속성을 궁극적으로 컨트롤러의 부울 속성에 바인딩하려고합니다. 일반적으로이 메뉴 항목의 속성은 state이지만 어떤 이유로 든 바인딩은 value입니다.

따라서 메뉴 항목의 바인딩을 컨트롤러의 부울 속성에 바인딩하십시오.

+0

실제로 항목의 이름이 아니란 점에 감사드립니다. 문제를 혼동하지 않도록 일반 이름을 사용하려고했습니다. 분명히 나는 ​​실패했다. :) – wadesworld

+0

좋아, 그래서 메뉴 항목 이름을 선택 내 비판을 무시합니다. 해결 방법은 동일합니다 : 메뉴 항목의 'value'를 컨트롤러의 Boolean 속성에 바인딩합니다. –