我正在尝试从NSToolbarItem打开弹出菜单。我尝试了this示例,但是我不能使用那个类方法,因为NSToolbar和NSToolbarItem继承自NSObject而不是NSView。
除了创建自定义视图之外,从NSToolbarItem打开弹出菜单的最佳方式是什么?
发布于 2010-04-03 07:18:45
仅供参考:这篇文章已经结束很久了,但我只是浏览一下,而且我有一个简单的方法,所以我想我应该给出一个答案,以防其他人看到它。我发现我不能将弹出按钮直接从库拖到Interface Builder中的工具栏上。但是,我可以将弹出式按钮从窗口拖到工具栏上。因此,我首先在窗口上创建弹出按钮,然后将其拖到工具栏上…它起作用了!其他对象也是如此。
发布于 2009-09-30 18:41:44
基本上,您创建了一个附加了NSMenu的类似NSButton的东西,然后使用NSToolbarItem的setView:方法将按钮嵌入到toolbarItem中。
发布于 2009-09-30 18:39:46
只要用你想要的菜单在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]];
}https://stackoverflow.com/questions/1499744
复制相似问题