2011-02-02 5 views
4

NSTableView 중 하나의 열에 NSPopUpButtonCell이 포함되어 있습니다. 이 열은 IBOutlet에 할당됩니다. 내 응용 프로그램의 컨트롤러 클래스는 init의 메뉴를 만들고 NSTableColumn의 dataCell 인 NSPopUpButtonCell에 할당합니다. 나는 메뉴를 클릭하고 항목 1 또는 항목 2를 선택하면NSTableView에서 계층 적 메뉴가있는 NSPopUpButtonCell

NSPopUpButton 
    NSMenu 
     NSMenuItem item1 
     NSMenuItem item2 
     NSMenuItem item3 
      NSMenu 
       NSMenuItem item3_1 
       NSMenuItem item3_2 
     NSMenuItem item4 
       NSMenuItem item4_1 
       NSMenuItem item4_2 
       NSMenuItem item4_3 

, 내 데이터 소스의 tableView:setObjectValue:forTableColumn:row: 해고되고 objectValue는 0 또는 1, 선택된 항목의 인덱스를 다음과 같이

메뉴가 보인다. 그러나 하위 메뉴 중 하나에서 항목을 선택할 때 objectValue는 -1이됩니다. 내가 선택한 메뉴 항목을 어떻게 얻을 수 있습니까?

+0

팝업 버튼이 풀다운 모드 또는 팝업 모드입니까? –

+0

팝업 모드입니다. – nephilim

+0

그럼, 아래, 내 설명. –

답변

1

나는 tableView : setObjectValue : forTableColumn : row에 의존한다고 생각하지 않습니다. 복잡한 메뉴와 하위 메뉴가있는 경우; 하위 메뉴가 작동 할 때 메뉴 항목 매핑에 '객체 값'이 실제로 존재하지 않습니다. NSMenu는 NSIndexPath를 사용하기에는 너무 오래되어 희망 할 수도 있지만 정수를 메뉴에 매핑 할만큼 복잡하지는 않습니다 및 하위 메뉴. (플러스 메뉴는 동적으로 많이 바뀌므로 "3"의 의미는 꽤 급격하게 변합니다.)

NSMenuItems (또는 부모 NSMenus)에 목표와 동작을 설정하면 가 선택됩니다.

0

항목 1과 2를 검색하는 것과 같은 코드를 사용하고 있습니까? 나는 당신이 있다고 생각하지만 때로는 이러한 것들을 쉽게 간과 할 수 있습니다./