Нажатие на элемент статуса должно начать действие, но не - PullRequest
1 голос
/ 11 июля 2011

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

Файл заголовка имеет это:

- (IBAction)updateStatusItem:(id)sender;

Файл класса .m имеет:

    [statusItem setAction:@selector(updateStatusItem:)];

Я пробовал это как в ApplicationDidFinishLaunching, так и в awakeFromNib.

А также в файле m:

-(IBAction)updateStatusItem:(id)sender{
NSLog(@"updateStatusItem worked");}

Из того, что я вижу, это имеет смысл, но всякий раз, когда я щелкаю по элементу состояния, меню просто нормально выпадает, и сообщение не регистрируется. Я подумал, что, возможно, мне нужно было как-то связать его в IB, но, насколько я могу судить, в IB нет представления статуса, все это делается программно. Я знаю, что это можно сделать, но это не работает для меня. Может кто-нибудь из вас видит что-то не так?

Спасибо за помощь.

1 Ответ

1 голос
/ 11 июля 2011

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

[statusItem setAction:@selector(updateStatusItem:)];
[statusItem setTarget:yourController];

Когда действие инициируется, это вызовет ‑updateStatusItem:метод объекта контроллера.

Однако у вас не может быть элемента состояния, который использует цель / действие и который также имеет меню.Если у вашего элемента состояния есть меню, то оно всегда будет вызываться щелчками по элементу состояния, а цель и действие элемента состояния просто игнорируются.

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