我试图将NSButton图像添加到NSTextField的最右侧。具体来说,它将是一个启动NSPopover(图形日期选择器日历)的按钮。现在,我要做的就是获取NSTextField最右侧的图像按钮。
我已经将NSTextField子类化了,这是我的代码:
@implementation myDateTextField {
- (void) awakeFromNib {
// my image button icon is 16px by 16px
NSRect buttonFrame = NSMakeRect(0.0f,0.0f, 16.0f, 16.0f);
NSButton *popoverButton = [[NSButton alloc] initWithFrame: buttonFrame];
popoverButton.buttonType = NSMomentaryChangeButton;
popoverButton.bezelStyle = NSInlineBezelStyle;
popoverButton.bordered = NO;
popoverButton.imagePosition = NSImageOnly;
[popoverButton setImage:[NSImage imageNamed:@"calendar_button.png"]];
[popoverButton.cell setHighlightsBy:NSContentsCellMask];
[self addSubview:popoverButton];
NSLog(@"awakeFromNib loaded.");
}
}
在Interface Builder中,我将我的NSTextField类设置为myDateTextField,我可以确认在窗口加载时正在调用awakeFromNib。我的问题是按钮根本没有出现!
关于我可能做错的任何建议?我意识到按钮的位置可能会在文本字段中关闭,但是现在我要做的就是让它出现。
答案 0 :(得分:0)
你的代码中有一个拼写错误(NSRect =
,摆脱了“=”)。否则我运行这个代码,只要我有一个名为“calendar_button.png”的实际图像,它就可以正常运行。没有图像,代码仍然运行但没有显示。
尝试测试实际找到的图像:
NSImage *calImage = [NSImage imageNamed:@"calendar_button.png"];
if(calImage == nil){
NSLog(@"Failed to find calendar image!");
}
[popoverButton setImage:calImage];
您还可以尝试将popoverButton.bordered
设置为YES
以查看该按钮的显示位置。