2009-08-08 2 views

답변

0

자신의 수공예품 대신 실제로 NSColorWell을 사용해야합니다. 애플이 다른 플랫폼 (특히 리눅스)보다 뛰어난 GUI를 갖고있는 이유 중 하나는 개발자가 이런 종류의 일을하기 위해 표준 컴포넌트를 사용하기 때문이다. '인터페이스가 더 간결 해 졌다고 생각하기 때문에'와 같은 인수는 김프가 GUI를 설계하지 않는 방법의 주요한 예가되는 이유입니다.

즉, 기본적으로 당신이하려고하는 것은 고정 크기 목록 (InterfaceBuilder에서 할 수있는 것처럼)이 아닌 동적 메뉴를 정의하는 것입니다. 이 작업은 NSMenu 및 NSMenuItem 클래스를 통해 수행 할 수 있습니다. 당신이해야 할 것입니다 무엇

MenuList documentation guide

오히려 주문형 메뉴를 표시보다, 응용 프로그램이 기본 배열을 시작할 때 그것을 채울 것입니다. 그런 다음 배열이 변경되면 (모델 객체를 통해) 메뉴가 다시 생성됩니다. 또는 menuNeedsUpdate : 메시지를 사용하여 메뉴를 트랩하십시오.

+0

응답에 감사드립니다. 모두가 NSColor에 전념하는 것처럼 보입니다. 사실, 적절하지 않은 경우가 많이 있습니다. 예 : iCal. 소스 목록의 캘린더에서 "정보 얻기"를 선택하고 오른쪽에있는 색상 메뉴를 클릭하십시오. 그게 거의 내가하려는 일이야. 사과의 표준 구성 요소로 인터페이스를 채울 수 있지만 좋은 GUI는 아닙니다. 반대의 경우도 마찬가지입니다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다! –

0

바인딩을 사용하고 있지 않습니다. "Custom ..."을 쉽게 할 수는 있지만 분리 기호는 사용할 수 없습니다.

어쨌든 NSColorWell을 사용하지 않는 이유는 무엇입니까?

+0

나는 colorwell 사용에 대한 생각 했어,하지만 메뉴 항목은 정말 인터페이스가보다 간결합니다. 둘 다 sharedColorPanel을 열 때와 동일한 효과를 나타냅니다. 내보기 클래스에서 내 배열이 변경 될 때마다 수동으로 메뉴를 다시 작성하는 것이 최선의 해결책으로 보입니다. –

1

비슷한 PopUpButton을 만들었지 만 기본 색상을 아직 고정 된 배열에 바인딩하고 있지는 않습니다. 두 가지 appraoches가 있습니다 - 둘 다 순수 주의자에 의한 해킹으로 간주 될 수 있지만, 그들은 일을 끝내야합니다.

  1. 서브 클래스 NSPopUpButtonCell 및 attachPopUpWithFrame를 오버라이드 (override)은 자신의 메뉴 항목을 추가 할 수 있습니다. 나는 바운드 아이템과 함께 시도하지 않았다.

  2. 배열의 '사용자 지정 ..'개체를 하드 코딩하고 표시된 색상 패널의 동작을 사용하여 배열에 새 항목을 추가하십시오.

관련 문제