NSToolbarItem からポップアップ メニューを開こうとしています。この例に従ってみましたが、NSToolbar と NSToolbarItem は NSView ではなく NSObject から継承されるため、そのクラス メソッドを使用できません。
カスタム ビューを作成する以外に、NSToolbarItem からポップアップ メニューを開く最良の方法は何ですか?
NSToolbarItem からポップアップ メニューを開こうとしています。この例に従ってみましたが、NSToolbar と NSToolbarItem は NSView ではなく NSObject から継承されるため、そのクラス メソッドを使用できません。
カスタム ビューを作成する以外に、NSToolbarItem からポップアップ メニューを開く最良の方法は何ですか?
基本的には、 のようなものを作成し、のメソッドを使用しNSButton
て、toolbarItem にボタンを埋め込みます。NSMenu
NSToolbarItem
setView:
参考までに: この投稿は長い間終わっていますが、私はブラウジングしているだけで、簡単な方法があるので、他の誰かがそれを調べた場合に備えて答えを出すと思いました. Library から Interface Builder のツールバーにポップアップ ボタンを直接ドラッグできないことがわかりました。ただし、ポップアップ ボタンをウィンドウからツールバーにドラッグすることはできます。だから私は最初にウィンドウにポップアップボタンを作成し、それをツールバーにドラッグします...うまくいきます! 他のオブジェクトも同様です。
必要に応じて、メニューを使用して IB で NSView を作成するだけです。次に、ウィンドウ コントローラーに、次のようなコードを追加します。
// This assumes you have a window property pointing to the window to which you'll
// add the toolbar. It also assumes you've connected the NSView to add to the
// toolbar to a member called toolbarView.
- (NSArray*)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar {
return [NSArray arrayWithObject:@"myToolbarMenu"];
}
- (NSArray*)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar {
return [self toolbarAllowedItemIdentifiers:toolbar];
}
- (NSToolbarItem*)toolbar:(NSToolbar*)toolbar
itemForItemIdentifier:(NSString*)str
willBeInsertedIntoToolbar:(BOOL)flag
{
if ([str isEqualToString:@"myToolbarMenu"] == YES) {
NSToolbarItem* item = [[NSToolbarItem alloc] initWithItemIdentifier:str];
[item setView:toolbarView];
[item setMinSize:[toolbarView frame].size];
[item setMaxSize:[toolbarView frame].size];
return [item autorelease];
}
return nil;
}
- (void)windowDidLoad {
NSToolbar* toolbar = [[NSToolbar alloc] initWithIdentifier:@"myToolbar"];
[toolbar setDelegate:self];
[self.window setToolbar:[toolbar autorelease]];
}
ツールバー項目に実際のポップアップ ボタンが必要な場合は、NSPopUpButton をツールバー項目のビューとして設定します。
Interface Builder 3.2.1 (この機能が実際にいつ導入されたかはわかりません) では、nib ウィンドウのオブジェクトの階層リストでツールバーにドリルダウンし、ライブラリ パレットからポップアップ ボタンをリストのツールバー。IB がボタンをツールバー項目にラップします。