objective-c – 如何使用自定义视图隐藏菜单项?

objective-c – 如何使用自定义视图隐藏菜单项?,第1张

概述我在NSMenuItem中使用一个非常简单的自定义视图(仅包含只读NSTextField和NSSegmentedControl)(使用-setView:方法).这部分按预期工作. 这是问题所在:在-menuNeedsUpdate:NSMenu委托方法中我有条件地隐藏了菜单项.当我调用[item setHidden:YES]时,带有自定义视图的菜单项不会隐藏,但其他“香草”菜单项会隐藏. 我的自定义 我在NSMenuItem中使用一个非常简单的自定义视图(仅包含只读NSTextFIEld和NSSegmentedControl)(使用-setVIEw:方法).这部分按预期工作.

这是问题所在:在-menuNeedsUpdate:NSMenu委托方法中我有条件地隐藏了菜单项.当我调用[item setHIDden:YES]时,带有自定义视图的菜单项不会隐藏,但其他“香草”菜单项会隐藏.

我的自定义视图是在自己的XIB中构建的,我通过自定义的NSVIEwController访问它.

更新

即使我在Interface Builder中选中隐藏复选框,菜单项仍然可见,并删除它隐藏在代码中的行.

更新2

我还尝试在菜单项上设置隐藏之前和之后设置隐藏在自定义视图上.结果就好像菜单项没有隐藏,但视图是;视图的控件不可见,但它们应该存在差距.

更新3

我修改了Apple的MenuItemView示例代码,以便在添加之后隐藏其中一个菜单项(插入[menuItem setHIDden:YES];在第87行),它与我的代码具有相同的效果(也就是说,没有).

我开始认为隐藏此菜单项的唯一方法是将其视图设置为nil,当我需要隐藏它并在需要显示它时将其放回,但似乎不应该是必要的.

更新4

使用Mike的答案,下面是我正在使用的代码:

// Declared in the header fileIBOutlet NSMenuItem *prevIoUsMenuItem;IBOutlet NSMenuItem *togglingMenuItem; //Needs to be RETAINED. . .- (voID)menuNeedsUpdate:(NSMenu *)menu {    BOol hIDeItem = YES; // Some criteria,obvIoUsly    // Remove the menu item,if it was already present    if ([menu indexOfItem:togglingMenuItem] >= 0) {        [menu removeItem:togglingMenuItem];    }    // Put it back if it should be visible    if (!onePageVisible) {        [menu insertItem:togglingMenuItem                 atIndex:[menu indexOfItem:prevIoUsMenuItem] + 1];    }}@H_404_34@解决方法 您可以根据需要删除/重新添加,而不是隐藏项目吗?  

[rootMenu removeItemAtIndex: 23];@H_404_34@                            	          总结       

以上是内存溢出为你收集整理的objective-c – 如何使用自定义视图隐藏菜单项?全部内容,希望文章能够帮你解决objective-c – 如何使用自定义视图隐藏菜单项?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1071696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存