2016-11-02 4 views
0

Я создал подкласс 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; 


} 

Например, если я создаю два компонента, один с помощью кода и один строитель интерфейс я могу видеть только первый компонент, с blueBackground.

Любые идеи? Thanks

+0

Записывается ли «initWithCoder»? Как вы добавили текстовое поле в IB? Вы установили значение? – Willeke

+0

Инициируется InitWithCoder. Я добавляю customView, я меняю класс в Инспекторе Identity, а затем добавляю ссылку для ссылки в свойство того же класса. Я, по крайней мере, вижу красную рамку. Но нет. Я ничего не вижу. – Talkanian

+0

Добавьте «NSTextField» и измените класс. – Willeke

ответ

1

При добавлении подкласса класса Appkit в IB добавьте ближайший суперкласс и измените класс в Identity Inspector. Поэтому, если вы создали подкласс NSTextField, добавьте NSTextField и измените класс.