NSPopupButton菜单预呈现?

时间:2014-04-15 14:00:36

标签: cocoa nsmenu nspopupbutton

我有一个NSPopuButton,第一次打开它时,它很慢,因为它吸引了很多东西。第二次,每次之后,它都非常快。

我该怎么做才能使菜单呈现出来,所以即使是第一次也能快速打开?

到目前为止,我已经尝试在applicationWillLaunch中创建菜单,在创建它之后,我调用popupMenuPositioningItem:atLocation:inView:。

这很好用,但问题是它在屏幕上显示菜单。 我尝试创建一个屏幕外窗口并查看,然后在那里打开菜单,但它总是被绘制在屏幕内。

有没有办法预呈现菜单,或显示它但将其强行关闭?

感谢。

2 个答案:

答案 0 :(得分:0)

你应该找出为什么需要这么长时间。很可能是某种文件活动(如加载图像或数据)或计算。我不认为这是绘图本身(每次都会缓慢绘制)。

使用“Time Profiler”或“文件活动”工具查找有问题的方法调用。然后优化该代码或预先调用它。

答案 1 :(得分:0)

然后是另一个想法。我会抛弃弹出按钮并使用带有下拉图标的常规按钮。单击它会显示带有NSTableView的NSPopover,其中包含字体列表。与菜单不同,表格经过优化,可显示大量数据和延迟加载。最初它只会加载可见行的字体。