У меня есть statusitem в панели системного меню, что делает popover появляться при нажатии. Я бы хотел, чтобы popover автоматически отображался при первом запуске приложения. Я попытался добавить [self clickStatusBar:self]
в метод awakeFromNib, но он не работает. Кто-нибудь знает, как это сделать?Нужно ли создавать NSPopover во время awakeFromNib?
Вот мои текущие методы:
- (void)awakeFromNib {
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setTitle:@"Locating..."];
[statusItem setTarget:self];
[statusItem setAction:@selector(clickStatusBar:)];
[statusItem setHighlightMode:YES];
}
- (void)clickStatusBar:(id)sender {
[[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge];
}
Я попытался добавления applicationDidFinishLaunching:
в
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[self clickStatusBar:self];
}
, но я получаю ошибку -[AppDelegate bounds]: unrecognized selector sent to instance
Ну, я пробовал это, но я все еще получаю сообщение об ошибке (см. Мой обновленный вопрос) , Я думаю, что я вызываю 'clickStatusBar' неправильно. – wigging
Вы не можете вызвать это действие в делегате приложения. Вам нужно поместить выход в делегат приложения, установить соединение в IB из этого элемента состояния в розетку, а затем вызвать действие в элементе через эту переменную или свойство. – febeling
Извините, я смутился. Не обращайте внимания на часть IBOutlet (я отредактирую aswer соответственно). Вы ожидаете статус элемента как отправителя для действия, поэтому, когда вы вызываете его программно, вам нужно передать это, на месте, где теперь находится 'self'. (Я предполагаю, что вышеуказанный код является контроллером или делегатом приложения, а popover работает с кликом уже.) – febeling