Я установил файл nib, чтобы включить некоторые основные элементы UIView в большой элемент UIView. Два элемента - это подклассы класса UIImageView (метры для отображения данных пользователю). Во всяком случае, на мой взгляд, я бы хотел, чтобы эти счетчики были их собственным файлом nib, так как у них было несколько визуальных элементов, и для здравого смысла было бы удобно разместить счетчик отдельно в своем собственном файле nib. Я также хотел бы иметь один контроллер для счетчика и другие базовые элементы в родительском файле nib. Я установил дочерние измерительные приборы в родительский ниб для моего пользовательского класса (например, UIMeter). У меня возникли проблемы с загрузкой дочернего элемента в родительский nib, когда я переопределяю метод UIMeter initWithCoder, он создает бесконечный цикл, поскольку я пытаюсь использовать loadnibnamed для доступа к дочернему файлу nib для загрузки. Я также попробовал загрузить nib из родительского контроллера, но он загружает как дочерний ниб, так и пин из loadnibnamed. Это, вероятно, имеет смысл с кодом и изображениями:Загрузка файла nib в файл nib
Код UIMeter, на самом деле не уверен, что мне это нужно, поскольку он вызывает бесконечный цикл, но я надеюсь, что представление может быть достаточно умным, чтобы загрузить себя каким-то образом хотя при чтении документов кажется более уместным сделать это в контроллере для представления.
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{
self = [[[NSBundle mainBundle] loadNibNamed:@"PowerMeterView" owner:self options:nil] firstObject];
}
return self;
}
В родительском контроллере я дозвон вида, как так:
-(void)loadView
{
if(![self isViewLoaded])
{
GameMenuView *menuView = [GameMenuView new];
menuView.userEnergy = [[[NSBundle mainBundle] loadNibNamed:@"PowerMeterView" owner:self options:nil] firstObject];
menuView.userReactor = [[[NSBundle mainBundle] loadNibNamed:@"PowerMeterView" owner:self options:nil] firstObject];
_gameMenuView = menuView;
//--This places the child nib from the file on the view but it is not replacing the UIMeter in the parent nib
[menuView.userEnergy setFrame:CGRectMake(0, 0, 20, 20)];
[menuView addSubview:menuView.userEnergy];
[self setView:menuView];
}
}