У меня есть xib для главного окна, и я создал пользовательский вид в следующих шагах:
- Создайте новый класс, который наследует от
NSView
.
MyView.h
:
#import <Cocoa/Cocoa.h>
IB_DESIGNABLE
@interface MyView : NSTableCellView
@end
MyView.m
:
#import "MyView.h"
@implementation MyView
- (void)awakeFromNib {
NSLog(@"Post view awaking from nib.");
}
@end
- Создайте новый xib и задайте класс корневого представления классу, созданному выше. И дизайн в этом xib.
- Установить выходы из xib в класс.
И я попытался использовать это настраиваемое представление в главном окне в следующих шагах:
- Перетащите пользовательский вид в главное окно xib.
- Задайте класс этого пользовательского представления для класса, созданного выше.
Но ничего не делает. Из журнала я вижу, что код из awakeFromNib
из класса пользовательского представления выполнен. Когда я устанавливаю класс IB_DESIGNABLE
, представление становится пустым в главном окне xib, отличном от того, что я разработал.
Я попытался установить владелец файла настраиваемого представления xib в пользовательский класс, но ничего не изменилось.
Я предполагаю, что проблема заключается в том, что пользовательский вид xib файла фактически не загружен. Когда я искал его, похоже, немного ссылок на эту точную тему. Итак, как я должен достичь этой цели? I.e., спроектировать представление в IB, реализовать его методы в классе, связать эти два и выставить его точно так же, как системное представление для использования в других xibs?
ОБНОВЛЕНИЕ:
Я нашел учебник и понял, чего мне не хватает (для правильного отображения представления при его создании). Мне нужно добавить выход из представления в xib в класс вида:
@property (nonatomic, strong) IBOutlet NSView *view;
а затем загрузите его в метод (id)initWithCoder:(NSCoder *)coder
.
[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self topLevelObjects:nil];
[self addSubview:self.view];
Но представление не будет отображаться в построителе интерфейса.