我在应用程序的工具栏中有两个自定义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/