У меня возникли реальные трудности с начальным программированием Какао, которое я выполняю.
По сути, у меня есть пункт NSStatusBar
с NSMenu
в качестве меню. В меню есть один NMMenuItem
. В IB я подключил NSMenuItem к NSObject
, который сам по себе настроен на класс ApplicationDelegate; Затем я установил Полученные действия в метод IBAction
в ApplicationDelegate. Я думаю, что все правильно подключено, за исключением случаев, когда я запускаю программу и щелкаю по пункту меню, метод IBAction
не вызывается. Я действительно не могу понять это. Вот соответствующий код.
Делегат приложения h файл:
#import <Cocoa/Cocoa.h>
@interface sssAppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSMenu *statusMenu;
NSStatusItem *statusItem;
}
- (IBAction)showPreferencePanel:(id)sender;
@end
Делегат приложения m файл:
#import "sssAppDelegate.h"
@implementation sssAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
}
-(void)awakeFromNib{
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
[statusItem setMenu:statusMenu];
[statusItem setTitle:@"Status"];
[statusItem setHighlightMode:YES];
}
- (IBAction)showPreferencePanel:(id)sender {
NSLog(@"Hello World!");
}
@end
Как я уже сказал, в IB я подключил NSMenu
к statusMenu
в делегате приложения (таким образом, все меню отображается под NSStatusBar
), и я подключил NSMenuItem
в NSMenu
к NSObject
с классом Application Delegate и подключил его к вызову showPreferencePanel, но ничего не происходит, когда я его запускаю !!!
Я также пробовал это программно, но все еще не могу вызвать метод IBAction.
Редактировать: я бы прикрепил несколько снимков экрана, чтобы показать настройки в IB, но мне пока не разрешено.
Основной перо, которое содержит меню, добавляемое к NSStatusBar
, выглядит так:
- FO
NSApplication
- FR
FirstResponder
- Приложение
NSApplication
- Диспетчер шрифтов
NSFontManager
- Главное меню
NSMenu
- Пункт меню (Настройки)
NSMenuItem
- Sss App Delegate
sssAppDelegate
NSMenuItem:
- Отправленные действия -
showPreferencePanel
---> Sss App Delegate
Делегат приложения Sss:
- Розетки -
statusMenu
---> Main Menu
- Полученные действия -
showPreferencePanel:
---> Main Item (Preferences)