2011-01-17 3 views
0

나는 Cocoa 문서 기반 응용 프로그램을 작업 중입니다. 파일 메뉴에 "Export Things ..."라는 메뉴 항목이 있습니다.. 이 메뉴 항목은 첫 번째 응답자에 연결되고 MyDocument에있는 선택기를 호출합니다. 여태까지는 그런대로 잘됐다.사용자 선택에 따라 NSMenuItem 변경하기

사용자 선택에 따라이 메뉴 항목의 제목을 변경하고 싶습니다. 사용자가 아무 것도 선택하지 않은 경우 "모든 것 내보내기 ..."을 읽고 사용자가 선택한 항목이있을 경우 "선택한 것 내보내기 ..."을 읽어야합니다. 열려있는 문서가 없으면 "항목 내보내기 ..."을 읽어야합니다.

어디에서이 메뉴 항목을 변경해야합니까? setTitle :을 사용하여 메뉴 항목을 변경할 수 있지만 NSMenuItem에 대한 참조는 어떻게 얻을 수 있습니까?

답변

5

-validateMenuItem:을 메뉴 항목의 동작을 처리하는 응답자 클래스에 구현할 수 있습니다. 항목을 사용할 수 있는지 여부를 나타내는 BOOL을 반환해야하지만 제목을 변경하는 데 사용할 수있는 매개 변수로 NSMenuItem에 대한 참조를 얻을 수도 있습니다.

처리 할 메뉴 항목을 결정하려면 action을 검사해야합니다.

- (BOOL)validateMenuItem:(NSMenuItem *)item { 
    if ([item action] == @selector(export:)) { 
    if (hasSelection) { 
     [item setTitle:NSLocalizedString(@"Export Selected Things",nil)]; 
    } else { 
     [item setTitle:NSLocalizedString(@"Export All Things",nil)]; 
    } 
    } 
    return YES; 
} 
+0

완벽하게 작동합니다. 사소한 문제는 문서를 닫을 때 메뉴 항목이 기본 제목으로 재설정되지 않는다는 것입니다. 하지만 어쨌든 회색으로 표시되기 때문에 그것이 받아 들여질 수 있습니다. –