“菜单栏小部件”不更新其界面

发布于 2024-11-27 07:47:19 字数 750 浏览 0 评论 0 原文

我正在尝试创建一个小的“菜单栏小部件”。所以它并不是真正的小部件,而是一个 Cocoa 应用程序,它在扩展坞中没有图标,但在菜单或状态栏中有一个图标。

您可以通过单击按钮来触发 NSTimer,然后它应该显示倒计时。但事实并非如此……

- (void)update {
    NSTimeInterval interval = [endDate timeIntervalSinceNow];

    int _seconds = (int)interval%60;
    int _minutes = (((int)interval-_seconds)/60)%60;
    int _hours = ((int)interval-_seconds-_minutes*60)%3600;

    timeLeft.stringValue = [NSString stringWithFormat:@"%i:%i:%i",_hours,_minutes,_seconds];

    NSLog(@"%i:%i:%i",_hours,_minutes,_seconds);
}

那么到底发生了什么?

当我触发计时器时,界面不会更新 timeLeft 标签。 NSLog() 也不起作用。但如果我关闭盒子,NSLog 会告诉我正确的时间,如果我再次打开盒子,它会向我显示正确的时间。但它不会再更新,直到我再次关闭盒子。

I'm trying to create a small "Menubar-Widget". So it's not really a widget, but it's a Cocoa-Application, which has no icon in the dock but an icon in the menu- or statusbar.

You can fire a NSTimer by clicking a button, and then it should show a countdown. But it doesn't...

- (void)update {
    NSTimeInterval interval = [endDate timeIntervalSinceNow];

    int _seconds = (int)interval%60;
    int _minutes = (((int)interval-_seconds)/60)%60;
    int _hours = ((int)interval-_seconds-_minutes*60)%3600;

    timeLeft.stringValue = [NSString stringWithFormat:@"%i:%i:%i",_hours,_minutes,_seconds];

    NSLog(@"%i:%i:%i",_hours,_minutes,_seconds);
}

So what happen exactly?

When I fire the timer, the interface won't update the timeLeft Label. NSLog() won't work too. But if I close the box, the NSLog says me the correct time and if I open the box again, it's showing me the right thing. But it won't update anymore 'til I close the box again.

"Menubar-Widget"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不知在何时 2024-12-04 07:47:19

我用绝对时间替换了相对时间(例如下午 2:45)...界面仍然没有更新,但没关系。

I replaced the relative time with an absolute time (e.g. 2:45 pm)... Interface is still not updating, but it's ok.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文