【发布时间】:2010-09-18 17:34:20
【问题描述】:
我需要在 NSMenuItem 中使用自定义视图。我创建了一个新视图 XIB 并在其中自定义了视图。如何使用 setView: 方法加载该视图并在 NSMenuItem 中设置它?
更新:我找到了解决方案,但现在带有自定义视图的菜单项在鼠标悬停时不会突出显示。我能解决这个问题吗?
【问题讨论】:
标签: cocoa macos interface-builder nsview nsmenuitem
我需要在 NSMenuItem 中使用自定义视图。我创建了一个新视图 XIB 并在其中自定义了视图。如何使用 setView: 方法加载该视图并在 NSMenuItem 中设置它?
更新:我找到了解决方案,但现在带有自定义视图的菜单项在鼠标悬停时不会突出显示。我能解决这个问题吗?
【问题讨论】:
标签: cocoa macos interface-builder nsview nsmenuitem
我创建了一个 NSViewController 子类并将其设置为 XIB 中的文件所有者。然后我将文件所有者的视图出口设置为 XIB 中的视图,最后在需要时实例化视图控制器并将其视图设置为 NSMenuItem 视图,代码如下:
CustomViewController *viewController = [[CustomViewController alloc] initWithNibName:@"NibName" bundle:nil];
NSMenuItem *menuItem = [[NSMenuItem alloc] init];
[menuItem setView:[viewController view]];
【讨论】:
[viewContoller loadView];。至于突出显示视图,我的猜测是您需要手动完成所有这些操作。当鼠标在视图中时跟踪鼠标并根据需要重绘。