首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向NSToolbarItem添加弹出菜单?

如何向NSToolbarItem添加弹出菜单?
EN

Stack Overflow用户
提问于 2009-09-30 18:05:08
回答 5查看 4.6K关注 0票数 5

我正在尝试从NSToolbarItem打开弹出菜单。我尝试了this示例,但是我不能使用那个类方法,因为NSToolbar和NSToolbarItem继承自NSObject而不是NSView。

除了创建自定义视图之外,从NSToolbarItem打开弹出菜单的最佳方式是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-03 07:18:45

仅供参考:这篇文章已经结束很久了,但我只是浏览一下,而且我有一个简单的方法,所以我想我应该给出一个答案,以防其他人看到它。我发现我不能将弹出按钮直接从库拖到Interface Builder中的工具栏上。但是,我可以将弹出式按钮从窗口拖到工具栏上。因此,我首先在窗口上创建弹出按钮,然后将其拖到工具栏上…它起作用了!其他对象也是如此。

票数 3
EN

Stack Overflow用户

发布于 2009-09-30 18:41:44

基本上,您创建了一个附加了NSMenu的类似NSButton的东西,然后使用NSToolbarItemsetView:方法将按钮嵌入到toolbarItem中。

票数 4
EN

Stack Overflow用户

发布于 2009-09-30 18:39:46

只要用你想要的菜单在IB中创建一个NSView即可。然后在你的窗口控制器中,添加一些如下代码:

代码语言:javascript
复制
// 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]];
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1499744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档