NSTextField子类不会通过Interface Builder显示

问题描述:

我创建了NSTextField的子类。 如果我通过代码使用它没有问题,一切都很好,组件按预期工作。 如果我通过Interface Builder使用它,组件就不会显示。NSTextField子类不会通过Interface Builder显示

这里是我的子类inits:

-(instancetype)initWithFrame:(NSRect)frameRect{ 

self = [super initWithFrame:frameRect]; 

if(self){ 

    [self setAlignment:NSTextAlignmentCenter]; 
    [self setBackgroundColor:[NSColor blueColor]]; 
    [self setBezeled:NO]; 
    [self setEditable:NO]; 
    [self setSelectable:NO]; 
    [self.cell setUsesSingleLineMode:YES]; 

} 

return self; 

} 

-(instancetype)initWithCoder:(NSCoder *)coder{ 

self = [super initWithCoder:coder]; 

if(self){ 
    NSLog(@"initWithCoder"); 
    [self setAlignment:NSTextAlignmentCenter]; 
    [self setBackgroundColor:[NSColor redColor]]; 
    [self setBezeled:NO]; 
    [self setEditable:NO]; 
    [self setSelectable:NO]; 
    [self.cell setUsesSingleLineMode:YES]; 
} 

return self; 


} 

举例来说,如果我创建了两个部件,一个代码,一个由Interface Builder我只能看到第一个组件,与blueBackground。

任何想法? 谢谢

+0

是否记录了“initWithCoder”?你是如何在IB中添加文本字段的?你有没有设定价值? – Willeke

+0

已记录InitWithCoder。 我添加了一个customView,我在Identity inspector中更改了Class,然后将引用插口添加到同一个Class的属性中。 我希望至少看到一个红框。但不是。我什么也没看到。 – Talkanian

+0

添加'NSTextField'并更改类。 – Willeke

在IB中添加Appkit类的子类时,添加最近的超类并在Identity Inspector中更改类。因此,如果您创建了NSTextField的子类,请添加NSTextField并更改类。