私が実行している最初のCocoaプログラミングで実際に問題が発生しています。
基本的に、メニューに添付されたNSStatusBar
アイテムがあります。NSMenu
メニューには単一のがありますNMMenuItem
。IBでは、NSMenuItemを、NSObject
それ自体がApplicationDelegateのクラスに設定されているに接続しました。次に、ReceivedActionsを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ではApplication Delegateでに接続しNSMenu
(statusMenu
したがって、メニューはすべての下に表示されますNSStatusBar
)、NSMenuItem
内NSMenu
をNSObject
Application Delegateクラスに接続し、showPreferencePanelを呼び出すように接続しましたが、実行しても何も起こりません!!!
プログラムでも試しましたが、それでもIBActionメソッドを呼び出すことができません。
編集:IBでの設定を表示するためにいくつかの画面グラブを添付しますが、まだ許可されていません。
に追加されたメニューを含むメインのペン先はNSStatusBar
、次のようになります。
- FO
NSApplication
- FR
FirstResponder
- 応用
NSApplication
- フォントマネージャー
NSFontManager
- メインメニュー
NSMenu
- メニュー項目(設定)
NSMenuItem
- メニュー項目(設定)
- Sssアプリデリゲート
sssAppDelegate
NSMenuItem:
- 送信されたアクション
showPreferencePanel
---->Sss App Delegate
Sssアプリデリゲート:
- アウトレット
statusMenu
---->Main Menu
- 受け取ったアクション
showPreferencePanel:
---->Main Item (Preferences)