본문 바로가기

Mac&iOS

NSMenu와 NSMenuItem

메뉴를 추가하기 위해 아래와 같이 추가하였다.


NSMenuItem *fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"New Project" action:@selector(menu_newProject) keyEquivalent:@""];

[self.menuNew.submenu addItem:fileMenuItem];


추가한 New Project 비활성화 상태다.


기본값이 비활성화인가. 

강제로 Enable을 시켜봤다.


NSMenuItem *fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"New Project" action:@selector(menu_newProject) keyEquivalent:@""];

[fileMenuItem setEnabled:YES];

[self.menuNew.submenu addItem:fileMenuItem];


결과는 같았다. 

구글링을 해보니 setAutoenablesItems 속성이 있다는 것을 알게 되었다.



[self.menuNew.submenu setAutoenablesItems:NO];

NSMenuItem *fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"New Project" action:@selector(menu_newProject) keyEquivalent:@""];

[fileMenuItem setEnabled:YES];

[self.menuNew.submenu addItem:fileMenuItem];

 


오오. 된다.

근데 문제가 생겼다. menu_newProject 메시지가 오지 않았다.

근본적인 해결책을 찾아야 했다. 


타겟/액션에 관한 설정을 안해서 발생한 문제로 초보적인 실수였다.-_-

올바른 해결책은 다음과 같다.


NSMenuItem *fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"New Project" action:@selector(menu_newProject) keyEquivalent:@""];
[fileMenuItem setTarget:self];
[self.menuNew.submenu addItem:fileMenuItem];


결과도 정상적이다.












'Mac&iOS' 카테고리의 다른 글

XCode Build Clean  (0) 2016.06.23
NSButton setFrame Not working  (0) 2016.06.22
noteNewRecentDocumentURL is not working  (0) 2016.06.20
런타임때 레티나 디스플레이 체크  (0) 2016.06.08
CFNetwork SSLHandshake failed (-9824)  (0) 2016.06.07