Вы создаете метод IBAction. Любой метод, помеченный как таковой, будет виден контроллером класса в Интерфейсном Разработчике. Поэтому, если вы поместите такой метод в свой класс контроллера приложения, то в конструкторе интерфейса вы увидите этот метод в объекте контроллера вашего приложения. Теперь, когда вы видите его в IB, вы подключаете этот метод к элементу меню, перетаскивая его из элемента меню в контроллер. У метода ibaction есть аргумент под названием «отправитель», который является отправителем сообщения. Так что если вы подключите метод к пункту меню, то отправителем будет NSMenuItem, потому что это объект, который вызывает метод. И NSMenuItem отвечает на метод "setTitle:", который вы можете использовать для изменения заголовка. Так что-то вроде этого будет работать ...
В файле ".h"
-(IBAction)displayMenuItemtitle:(id)sender;
В файле ".m"
-(IBAction)displayMenuItemtitle:(id)sender {
NSString* newTitle = @"my new title";
[sender setTitle:newTitle];
}
EDIT:
После повторного прочтения вашего вопроса, возможно, вы захотите, чтобы объект NSMenu отображал новый заголовок при открытии меню. NSMenu имеет метод делегата menuWillOpen :. Поэтому установите контроллер вашего приложения в качестве делегата NSMenu. Тогда в вашем классе appcontroller используйте это ...
- (void)menuWillOpen:(NSMenu *)menu {
NSArray* menuItems = [menu itemArray];
NSMenuItem* theMenuItem = [menuItems objectAtIndex:0];
NSString* newTitle = @"my new title";
[theMenuItem setTitle:newtitle];
}