У меня есть настройки вида в Интерфейсном Разработчике, который содержит viewController, который загружает другой файл Nib.Однако по какой-то причине объекты, содержащиеся в загружаемом nib-файле, никогда не называются awakeFromNib
.Что мне здесь не хватает?Можно ли в любом случае загружать представления из Nib в построителе интерфейсов, а также управлять их свойствами и размерами в построителе интерфейсов?
В целом, каковы лучшие практики для управления несколькими перьями?и объединяя их в сложные представления?
Окончательное решение:
Я создал подкласс NSViewController, как это.
@interface NibLoadingViewController : NSViewController
// The placeholder would be replaced during run-time by the view
@property (weak, nonatomic) IBOutlet NSView *placeholder;
@end
@implementation NibLoadingViewController
@synthesize placeholder = _placeholder;
- (void)awakeFromNib {
if (self.placeholder)
self.view = self.view; // Trigger lazy loading
}
- (void)loadView {
[super loadView];
if (!self.view)
return;
// Replace the placehoder if it exists
if (self.placeholder) {
// Copy over relevant attributes
self.view.frame = self.placeholder.frame;
self.view.autoresizingMask = self.placeholder.autoresizingMask;
self.view.autoresizesSubviews = self.placeholder.autoresizesSubviews;
// Replaces the old view
[self.placeholder.superview replaceSubview:self.placeholder with:self.view];
self.placeholder = nil;
}
self.nextResponder = self.view.nextResponder;
self.view.nextResponder = self;
}
@end
Таким образом, вам просто нужно подключить выход заполнителя в наконечнике, который содержит контроллер представления, и он автоматически загрузит для вас другие наконечники, скопирует все атрибуты из заполнителя и заменит его восновной кончик