如何以编程方式将新的 NSToolbarItem 添加到现有工具栏?
我正在寻找一种名为 addNewItem:(NSToolbarItem *)item
的方法或类似的方法,可以让我向工具栏添加以编程方式创建的项目,但我还没有找到。我想添加一个项目,当用户点击它时显示一个弹出窗口,就像在 Safari 中当用户下载某些东西时一样。
I'm looking for a method called addNewItem:(NSToolbarItem *)item
or something like this that lets me add a programmatically created item to my toolbar, but I haven't found any. I would like to add an item that shows a popover when the user clicks on it, like in Safari when the user downloads something.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要有一个符合
NSToolbarDelegate
协议的类,并让该类的一个实例作为工具栏的委托。例如,此委托将实现-toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:
,它返回给定标识符的NSToolbarItem
实例,可能会按需创建该项目。通过执行此操作,您可以准备委托在工具栏要求其提供与标识符对应的项目时返回工具栏项目。完成此操作后,您可以通过将
-[NSToolbar insertItemWithItemIdentifier:atIndex]
发送到工具栏实例,以编程方式将新的工具栏项添加到工具栏。标识符字符串参数应与上一段中使用的匹配。如果您需要删除某个项目,请将-[NSToolbar removeItemAtIndex:]
发送到工具栏。添加和删除工具栏项目工具栏编程主题的 > 部分可可文档。
You need to have a class that conforms to the
NSToolbarDelegate
protocol and have an instance of that class be the delegate of your toolbar. This delegate would, for example, implement-toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:
, which returns anNSToolbarItem
instance for a given identifier, potentially creating that item on demand. By doing this, you’re preparing your delegate to return a toolbar item when the toolbar asks it for the item corresponding to an identifier.Having done that, you can programatically add a new toolbar item to the toolbar by sending
-[NSToolbar insertItemWithItemIdentifier:atIndex]
to the toolbar instance. The identifier string argument should match the one used in the paragraph above. If you need to remove an item, send-[NSToolbar removeItemAtIndex:]
to the toolbar.This is described with examples in the Adding and Removing Toolbar Items section of the Toolbar Programming Topics for Cocoa document.