Ответ 1
Чтобы получить доступ к родительскому контроллеру View, вы можете использовать self.parentViewController
. После этого вы можете получить доступ к его виду, просто используя его свойство view
У меня есть главный контроллер представления, который заботится о чертеже для моего представления 2D opengl ES, а кнопка childManager диспетчера дочерних элементов определяет, какие кнопки загружать и рисовать во время запуска.
Как только пользователь нажимает на одну из этих кнопок, этот контроллер представления создается, и его представление должно появиться, но представление никогда не добавляется, а проверено на работу. Вот мой код с главного контроллера:
buttonManager=[[ButtonManager alloc] init];
[self addChildViewController:buttonManager];
[self.view addSubview:buttonManager.view];
и heres мой код, чтобы запустить это представление:
-(void)launchStopDialog: (NSString*)stopName {
NSLog(@"stopdialog should be launched.");
if (stopDialogController == nil)
stopDialogController = [[StopDialogController alloc] initWithNibName:@"StopDialog" bundle:nil];
if (stopDialogController)
[stopDialogController presentWithSuperview:self.view.superview withStopName:stopName];
}
Чтобы получить доступ к родительскому контроллеру View, вы можете использовать self.parentViewController
. После этого вы можете получить доступ к его виду, просто используя его свойство view
Примечание для тех, кто использует iOS 5.x +
self parentViewController
теперь возвращает nil
. Теперь вы должны использовать self presentingViewController
для достижения того же результата. См. Это сообщение в блоге для получения дополнительной информации и дополнительных работ по обновлению базы кода: http://omegadelta.net/2011/11/04/oh-my-god-they-killed-parentviewcontroller/
что сработало для меня
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString * segueName = segue.identifier;
if ([segueName isEqualToString: @"child-view"]) {
ChildViewController * childViewController = (ChildViewController *) [segue destinationViewController];
[self addChildViewController:childViewController];
}
}
Теперь, после того как они убили
self.parent
вы можете использовать
override func didMove(toParentViewController parent: UIViewController?)
{
}