В настоящее время у меня есть NSStatusItem
для строки состояния, которая инициализируется в awakeFromNib
следующим образом:
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setMenu:statusMenu];
[statusItem setImage:statusImage];
[statusItem setAlternateImage:statusHighlightedImage];
[statusItem setHighlightMode:YES];
[statusItem setTarget:self];
У меня есть NSMenu
, который открывается при нажатии на значок. Один из вариантов при нажатии должен открыть NSPopover
из значка строки состояния. Для этого у меня есть этот код, который подключается к пункту меню через Interface Builder:
- (IBAction)prefs:(id)sender {
NSRectEdge prefEdge = NSMaxYEdge;
[[self pop] showRelativeToRect:[[statusItem view] bounds]
ofView:[statusItem view]
preferredEdge:prefEdge];
}
Однако, когда я щелкаю элемент меню, который должен открыть всплывающее окно, ничего не происходит. Есть ли какая-то конкретная причина, по которой это может быть так? Насколько я могу судить, это должно быть возможно сделать.
Заранее спасибо. Я просмотрел Stack Overflow как мог, но если есть действительно повторяющийся вопрос, пожалуйста, дайте мне ссылку на него.
К вашему сведению: переменная statusItem
— это NSStatusItem
.
NSMenu
- person IluTov   schedule 27.12.2012-prefs:
?[self pop]
и[statusItem view]
не равны нулю? - person paulmelnikow   schedule 27.12.2012self.pop
nil
. - person IluTov   schedule 27.12.2012prefs:
- person IluTov   schedule 27.12.2012self.pop = [[NSPopover alloc] init];
в-awakeFromNib
. - person paulmelnikow   schedule 27.12.2012[statusItem view]
возвращал не-nil
. - person Wevah   schedule 27.12.2012