如何以编程方式将新的NSToolbarItem添加到现有工具栏?

Nic*_*kkk 8 cocoa nstoolbar nstoolbaritem

我正在寻找一个名为addNewItem:(NSToolbarItem *)item或类似的方法,让我可以添加一个以编程方式创建的项目到我的工具栏,但我还没有找到.我想添加一个项目,当用户点击它时会显示一个弹出框,就像用户下载内容时的Safari一样.

小智 16

您需要有一个符合NSToolbarDelegate协议的类,并且该类的实例是工具栏的委托.例如,该委托将实现-toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:,它返回NSToolbarItem给定标识符的实例,可能按需创建该项目.通过执行此操作,您正准备您的委托在工具栏要求输入与标识符对应的项目时返回工具栏项.

完成后,您可以通过发送-[NSToolbar insertItemWithItemIdentifier:atIndex]到工具栏实例以编程方式将新工具栏项添加到工具栏.标识符字符串参数应与上面段落中使用的参数匹配.如果您需要删除项目,请发送-[NSToolbar removeItemAtIndex:]到工具栏.

这是使用Cocoa工具栏编程主题文档的" 添加和删​​除工具栏项"部分中的示例进行描述的.

  • 为什么这么复杂,Apple? (7认同)
  • @Lukas因为在设计NSToolbar时,这样的技术对于减少RAM消耗是必要的.这是一个标准模式,以及Cocoa中的_everything_如何工作.只有新东西不能像这样工作. (3认同)