私が実行している最初のCocoaプログラミングで実際に問題が発生しています。
基本的に、メニューに添付されたNSStatusBarアイテムがあります。NSMenuメニューには単一のがありますNMMenuItem。IBでは、NSMenuItemを、NSObjectそれ自体がApplicationDelegateのクラスに設定されているに接続しました。次に、ReceivedActionsをIBActionApplicationDelegateのメソッドに設定しました。プログラムを実行してメニュー項目をクリックした場合を除いて、すべてが正しく接続されていると思います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をNSObjectApplication 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)