如何强制 NSMenuItem 重绘?

发布于 2024-09-10 22:32:30 字数 211 浏览 6 评论 0原文

我正在实现一个自定义状态栏菜单,它有一个带有 NSSearchField 的自定义视图。我正在根据搜索结果更新菜单项的数量。当用户在 NSSearchField 中键入时,菜单项的数量会发生变化。我注意到,如果结果数量保持不变,则项目标题不会更新(重绘)。我如何强制他们重画?

在重建菜单的函数中,我首先删除所有项目,然后根据搜索结果创建新项目。

谢谢,

纳瓦

I'm implementing a custom status bar menu, which has a custom view with NSSearchField. I'm updating number of menu items according to search results. The number of menu items is changed as user types in the NSSearchField. I've noticed, that if number of results stays the same, items titles are not updated (redrawn). How do I force them to redraw?

In the function, that rebuilds the menu I remove first all items and then create new items according to the search results.

Thanks,

Nava

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

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

发布评论

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

评论(2

半城柳色半声笛 2024-09-17 22:32:30

我可以通过以下方法实现它:当搜索结果的数量相同时,我不重新创建它们,只需更改标题并调用 itemChanged: 。当计数不同时,我重新创建菜单项。无论如何,这都是有效的。但无论如何,我被建议不要再使用菜单来实现此目的。

I could achieve it by following approach: When the number of search results is the same, i don't recreate them, just change the title and call itemChanged:. When the count is different I recreate menu items. This works anyway. But I was advised anyway to get back from using menu for this purposes.

ぶ宁プ宁ぶ 2024-09-17 22:32:30

当您想要更新菜单时,将菜单上的 menuChangedMessagesEnabled 设置为 YES

[menu setMenuChangedMessagesEnabled:NO];
// change the menu
[menu setMenuChangedMessagesEnabled:YES];

第二次调用会导致菜单应用更改。第一个是让您可以将一组更改一起批处理。

也就是说,苹果指南不鼓励在菜单打开时更改菜单,因为用户不习惯这样做并且可能会感到困惑。如果可行,请尝试重新设计您的应用程序,以便您可以使用其他内容,例如表格或矩阵,而不是菜单。

on the menu set menuChangedMessagesEnabled to YES when you want to update the menu:

[menu setMenuChangedMessagesEnabled:NO];
// change the menu
[menu setMenuChangedMessagesEnabled:YES];

The second invocation causes the menu to apply changes. The first one is so that you can batch a group of changes together.

That said, Apple guidelines discourages changing menus while they're open as users are not used to this and can be confusing. If it's feasible try to redesign your app so you can use something else, say a table or matrix, instead of a menu.

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