Поместить информацию в пункт меню Mac - PullRequest
0 голосов
/ 17 августа 2010

Надеюсь, это не слишком общее. Я новичок и пытаюсь научиться создавать строку состояния (меню справа) для Mac в Objective-C.

Мне удалось создать базовую схему, но я не знаю, какой метод использовать для определенного действия: я хотел бы, чтобы в раскрывающемся меню для него вызывался метод, который будет возвращать строку для отображения.

Другими словами, как заставить меню вызывать метод и отображать его возвращаемое значение.

В какао, пожалуйста.

Спасибо!

1 Ответ

2 голосов
/ 17 августа 2010

Вы создаете метод 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...