トップ «前の日記(2012-07-08) 最新 次の日記(2012-07-11)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|

2012-07-09 [OSX]MainMenu.xibのメニーにアクションを設定する

_ [OSX]MainMenu.xibのメニーにアクションを設定する

某所で、nibのメニューの項目をソースコードで設定する方法の説明があったので自分で試してみた。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSMenu  *mainMenu = [[NSApplication sharedApplication] mainMenu];
    NSMenuItem  *menuItem = [mainMenu itemWithTitle:@"File"];
    NSLog(@"%@", menuItem);
    NSMenu  *subMenu = [menuItem submenu];
    menuItem = [subMenu itemWithTitle:@"Close"];
    NSLog(@"%@", menuItem);
    [menuItem setTarget:self];
    [menuItem setAction:@selector(demo:)];
}
 
- (IBAction)demo:(id)sender
{
    NSLog(@"%s", __func__);
}

nibで定義したメニーに対してという事で、NSApplicationのmainMenuメソッドでNSMenuのインスタンスを取得する。
これは、メニューの塊のようなので、itemWithTitle:メソッドでタイトルからNSMenuItemのインスタンスを取得する。
ここで取得できるのは、メニューバーに対する、TOPのFileやEditメニューの塊のようなので、さらに取得できたものに対して、ここでは"Close"メニューを取得する。

これに対して、setTarget:とsetAction:を行えば、File/Closeメニューを選択されると、ここで設定したメソッドが呼ばれるようになる。

2012-07-09 22:14:14.668 Demo[13089:403] 
2012-07-09 22:14:14.671 Demo[13089:403] 
2012-07-09 22:14:21.790 Demo[13089:403] -[AppDelegate demo:]

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2012-07-08) 最新 次の日記(2012-07-11)» 編集