Mac&iOS

NSMenu와 NSMenuItem

잠재우기 2016. 6. 21. 08:00

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


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];


결과도 정상적이다.