Ответ 1
Попробуйте это
[self.myview addSubview: childViewController.view];
вместо
childViewController.view = self.myView;
У меня есть два NIB
ParentViewController.xib
ChildViewController.xib
ParentViewController.xib содержит UIView и UIViewController. ChildViewController.xib содержит UIButton
Я хочу, чтобы ChildViewController.xib загружался в ParentViewController.xib UIView
Я сделал следующее:
Я надеялся, что это загрузит ChildViewController в мой UIView в ParentViewController, но не повезло.
Я получил следующее предупреждение, которое может быть виновником:
'View Controller (Child View)' has both its 'NIB Name' property set and its 'view' outlet connected. This configuration is not supported.
Я также добавил дополнительный код в ParentViewController viewDidLoad():
- (void)viewDidLoad {
[super viewDidLoad];
ChildViewController *childViewController = [[ChildViewController alloc]initWithNibName:@"ChildViewController" bundle:nil];
childViewController.view = self.myView;
}
Любые мысли о том, почему ChildViewController не загружается в UIView ParentViewController?
Попробуйте это
[self.myview addSubview: childViewController.view];
вместо
childViewController.view = self.myView;
Альтернативой является создание "встроенного" представления (!) в Nib, скажем ChildView.xib
, а затем его экземпляр в ParentViewController.xib
(изменение класса в инспекторе идентификации). Нет необходимости программно [self.view addSubview:embeddedView]
в методе управления родительским представлением -viewDidLoad
.
Я написал, как мы вставляем настраиваемые Nibs внутри других Nibs в длинном блоге. Ключ переопределяет -awakeAfterUsingCoder:
в классе ChildView
, заменяя объект, загруженный из "родительского" Nib, загруженным из "дочернего" Nib.
Обратите внимание, что наш пользовательский подкласс UIView
, а не UIViewController
(см. Apple docs на пользовательских контроллерах просмотров: "Вы не должны использовать несколько настраиваемых контроллеров представлений для управления различными частями одной и той же иерархии представлений." )