我在应用程序的工具栏中有两个自定义NSToolbarItems。每个类中都有一个NSButton,在其中设置按钮,然后将工具栏项目的视图设置为按钮(例如,停止按钮项目):

@implementation RBSStopButtonToolbarItem

@synthesize button = _button;

-(id)initWithItemIdentifier:(NSString *)itemIdentifier
{
    self = [super initWithItemIdentifier:itemIdentifier];

    if(self)
    {
        // create button
        _button = [[NSButton alloc] init];

        // set the frame and bounds to be the same size
        //[_button setFrameSize:NSMakeSize(64.0, 64.0)];
        //[_button setBoundsSize:NSMakeSize(64.0, 64.0)];

        // button will not have a visible border
        [_button setBordered:NO];

        // set the original and alternate images...names are "opposite"
        [_button setImage:[NSImage imageNamed:@"StopButtonAlternateIcon"]];
        [_button setAlternateImage:[NSImage imageNamed:@"StopButtonIcon"]];

        // image position
        [_button setImagePosition:NSImageOnly];

        // set button type
        [_button setButtonType:NSMomentaryChangeButton];

        // button is transparent
        [_button setTransparent:YES];

        // set the toolbar item view to the button
        [self setView:_button];


    }
    return self;
}


对于每个自定义NSToolbarItem,我都有一个IBOutlet:

// toolbar item for start button
IBOutlet RBSStartButtonToolbarItem *_startButtonToolbarItem;

// toolbar item for stop button
IBOutlet RBSStopButtonToolbarItem *_stopButtonToolbarItem;


但是,我在自定义视图工具栏项中看不到图像:

图像是.icns类型。我尝试遵循的示例在这里:
NSButton in NSToolbar item: click issue

有经验的人可以提供建议吗?

最佳答案

我不知道为什么,但是:

[NSToolbarItem initWithCoder:]调用[NSToolbarItem setImage:],然后在设置为工具栏项目视图的按钮上调用[NSButton setImage:]。这会抹去您所做的一切。

您引用的示例不子类NSToolbarItem

我建议您也不要子类NSToolbarItem,而是通过界面生成器将常规的NSToolbarItem添加到工具栏,然后在awakeFromNib中通过其项目标识符找到该工具栏项目,并将按钮设置为其视图。

我已经证实,以这种方式执行此操作符合预期。

关于objective-c - 自定义NSToolbarItem按钮不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23232295/

10-09 16:27