当菜单当前在swift中打开时,从NSTimer动态更新NSMenuItem?

时间:2015-01-11 08:11:23

标签: macos swift nstimer nsmenuitem

所以这是我的情况,我有一个小应用程序,可以跟踪你工作了多长时间,让你知道什么时候休息一下。我有一个NSTimer每秒触发并更新一些数字(剩余时间)。该应用程序位于状态栏中,我希望剩余时间显示在状态菜单下拉菜单中的菜单项中。现在我有更新到NSMenuItem并且它可以工作,但是当你点击菜单栏中的图标进入菜单时,时间将不会动态更新,而你正在查看它。如果您更改焦点然后返回菜单,时间保持正确,但同样,当菜单打开时,它不会更新。

无论如何,即使菜单在swift中打开,我还能更新MenuItem吗?有几个其他线程与客观的C解决方案,但我无法适应swift。

1 个答案:

答案 0 :(得分:4)

您必须将您的Timer添加到NSRunLoop。

NSRunLoop.currentRunLoop().addTimer(yourTimer, forMode: NSRunLoopCommonModes)