문서 기반 응용 프로그램을 사용하고 문서보기에서 NSSearchField가 있습니다. 검색 필드에 표시 할 메뉴를 활성화했으며 메뉴 항목에 작업을 연결했습니다. 메뉴 항목 중 하나를 "대소 문자 일치"라고합니다. 이 메뉴 항목 옆에 수표를 넣고 빼낼 수 있기를 원합니다. 그렇게하려고하면 메뉴에 검사가 표시되지 않습니다.메뉴가 업데이트되지 않는 NSSearchField
-(IBAction)searchMenuMatchCase:(id)sender {
NSMenuItem *smi = [searchMenu itemWithTitle:@"Match Case"];
if (searchCaseSensitive) {
searchCaseSensitive = false;
[[searchMenu itemWithTitle:@"Match Case"] setState:NSOffState];
} else {
searchCaseSensitive = true;
[[searchMenu itemWithTitle:@"Match Case"] setState:NSOnState];
}
[searchMenu update];
NSLog(@"SM State %ld",[smi state]);
}
이 코드는 실행, 나는 1로 0 0에서 1로가는 상태를 나타내는 로그 메시지가 그러나 메뉴 항목 옆에 체크가 결코됩니다. 디버깅하는 동안 메뉴 항목 객체를 볼 때 토글하기 전에 "상태"값이 0과 1로 설정되어 있습니다.
제가 누락 된 부분에 대한 제안 사항이 있습니까?
예, 'validateMenuItem' 메소드를 사용해야합니다. 이는 메뉴가 팝업 될 때 사용되는 실제 메뉴가 IBOutlet이 직접 제어하는 메뉴가 아니라 해당 메뉴의 사본이기 때문입니다. –