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

Dynamically update NSMenuItem from an NSTimer while the menu is currently open in swift?

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

即使菜单在 swift 中打开,我是否仍然可以更新该 MenuItem?还有其他几个线程具有 objective C 解决方案,但我无法将它们调整为 swift。

您必须将定时器添加到 NSRunLoop。

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