NSMenuItem标题随时间变化。

时间:2010-11-03 11:54:42

标签: objective-c cocoa macos nsmenuitem nsstatusitem

我想实现一个NSStatusItem,其中标题随时间而变化。我的最终目标是在我设置的图像旁边的菜单栏中显示倒数计时器。也许我会以错误的方式解决这个问题。但是我已经有了一串字符,这些字符随着时间的推移不断变化,代表了计时器。我试图找出如何将该字符串放在我为我创建的menulet设置的图像旁边。

statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setTitle:"29:30"];

我尝试了多次调用setTitle方法,但它们似乎不起作用。在对象初始化之前,只有setTitle的初始调用才有效。之后没有任何反应。我想我可以释放NSStatusItem对象并在每次我想要更改计时器时重新创建它,但这看起来非常低效。我甚至不确定它是否会起作用。

此外,我已考虑使用setToolTip方法显示计时器倒计时。但这似乎与setTitle方法相同。设置完成后,在释放NSStatusItem对象并创建新对象之前,无法对其进行更改。

任何建议都将不胜感激。

谢谢

戴夫

2 个答案:

答案 0 :(得分:2)

我回答了自己的问题。 -setTitle可以多次调用,以便为倒数计时器动态更改标题,不需要自定义视图。我的问题遇到我的计时器无法正常工作,我的菜单的长度不足以显示计时器的文本。我现在可以调用setTitle刷新倒计时并每秒创建动态工具提示。我原本以为通过标准方法setTitle是不可能的。我错了。

statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setTitle:"29:30"];

戴夫

答案 1 :(得分:0)

为什么不使用它的-setView:?您可以创建自己的自定义视图并随意更新。