macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

itemChanged:

メニュー項目(anObject)が修正された時に呼び出されます
-(void)itemChanged:(id <NSMenuItem>)anObject:

解説

メニュー項目(anObject)が修正された時に呼び出されます。NSMenuDidChangeItemNotificationをポストします。

返り値

( void )

なし

引数

( id <NSMenuItem> )anObject

オブジェクト

フレームワーク

ApplicationKit

クラス

NSMenu

Instance Methods

使用可能

10.0

参照

例文

#import "MyObject.h"
#import "MyMenu.h"
@implementation MyObject

- (IBAction)myAction:(id)sender
{
/*
Localizable.stringsのJapaneseに記入してあります。
"menu_open"="開く";
"menuItem_1"="メニュー項目1";
"menuItem_2"="メニュー項目2";
"menuItem_3"="メニュー項目3";
*/
        NSMenuItem	*menuItem = [[[NSMenuItem alloc] init] autorelease];
        MyMenu *menu = [[[MyMenu alloc] init] autorelease];
        NSArray *arr = [[[NSArray alloc] init] autorelease];
        
        //デフォルトの通知センターをnCenterに
NSNotificationCenter *nCenter =[NSNotificationCenter defaultCenter];
//通知を作る
//NSNotification *notifi = [NSNotification notificationWithName:@"NSWindowDidResizeNotification" object:nil];

//nCenterにオブザーバーを加える
[nCenter addObserver:self//このオブジェクトを呼び出す
            selector:@selector(menuChange:) //呼び出されるメソッド
            name:@"NSMenuDidChangeItemNotification" //メニューが変更されたら
            object:nil];

            
        [menuItem setTitle:NSLocalizedString(@"menu_open",@"")];
        [menu setTitle: NSLocalizedString(@"menu_open",@"")];
        
        [menu addItemWithTitle: NSLocalizedString(@"menuItem_1",@"")
            action: @selector(mItem1) keyEquivalent: @"A"];
        [menu addItemWithTitle: NSLocalizedString(@"menuItem_2",@"")
            action: @selector( mItem2: ) keyEquivalent: @"B"];
        [menu addItem: [NSMenuItem separatorItem]];
        [menu addItemWithTitle: NSLocalizedString(@"menuItem_3",@"")
            action: @selector( mItem3: ) keyEquivalent: @"E"];
        [menuItem setSubmenu: menu];
        
        [menu setAutoenablesItems:NO];
        [menuItem setEnabled:YES];
        
        [[NSApp mainMenu] insertItem: menuItem atIndex: 2];
        [menuItem setTarget:self];
        NSLog([menu className]);
        arr = [menu itemArray];

        //[menu setDelegate:self];
}
//NSMenuDidChangeItemNotificationが通知されたときのメソッド
- (void)menuChange:(NSNotification *)notification
{
NSLog([notification name]);
}


-(void)mItem1:(id)sender
{
[sender setTitle:@"sss"];
NSLog(@"item1");
}
-(void)mItem2:(id)sender
{
NSLog(@"item2");
}
-(void)mItem3:(id)sender
{
NSLog(@"item3");
}
@end