【问题标题】:Loading NSView subclass from a XIB从 XIB 加载 NSView 子类
【发布时间】:2010-09-18 17:34:20
【问题描述】:

我需要在 NSMenuItem 中使用自定义视图。我创建了一个新视图 XIB 并在其中自定义了视图。如何使用 setView: 方法加载该视图并在 NSMenuItem 中设置它?

更新:我找到了解决方案,但现在带有自定义视图的菜单项在鼠标悬停时不会突出显示。我能解决这个问题吗?

【问题讨论】:

    标签: cocoa macos interface-builder nsview nsmenuitem


    【解决方案1】:

    我创建了一个 NSViewController 子类并将其设置为 XIB 中的文件所有者。然后我将文件所有者的视图出口设置为 XIB 中的视图,最后在需要时实例化视图控制器并将其视图设置为 NSMenuItem 视图,代码如下:

    CustomViewController *viewController = [[CustomViewController alloc] initWithNibName:@"NibName" bundle:nil];
    
    NSMenuItem *menuItem = [[NSMenuItem alloc] init];
    [menuItem setView:[viewController view]];
    

    【讨论】:

    • 具有自定义视图的菜单项不会在鼠标悬停时突出显示。我能解决这个问题吗?
    • 我需要在创建控制器后立即添加行[viewContoller loadView];。至于突出显示视图,我的猜测是您需要手动完成所有这些操作。当鼠标在视图中时跟踪鼠标并根据需要重绘。
    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多