Я настроил файл пера, чтобы включить некоторые основные элементы UIView в более крупный элемент UIView. Два элемента являются подклассами класса UIImageView (измерители для отображения данных пользователю). В любом случае, на мой взгляд, я хотел бы, чтобы эти счетчики были их собственным файлом пера, поскольку они имеют ряд визуальных элементов, и ради здравомыслия было бы неплохо поместить счетчик индивидуально в свой собственный файл пера. Я также хотел бы иметь один контроллер для счетчика и других основных элементов в родительском файле nib. Я установил дочерние объекты наконечника счетчика в родительском наконечнике для своего пользовательского класса (скажем, UIMeter). У меня возникли проблемы с загрузкой дочернего пера в родительский nib, когда я переопределяю метод UIMeter initWithCoder, он создает бесконечный цикл, поскольку я пытаюсь использовать loadnibnamed для доступа к файлу дочернего пера для загрузки. Я также пытался загрузить наконечник с родительского контроллера, но он загружает как дочерний наконечник, так и наконечник из loadnibnamed. Это, вероятно, будет иметь больше смысла с кодом и изображениями:
Код 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];
}
}