Я думаю, что ваша идея ошибочна, если вы имели в виду замену UIViews
из UIViewController
(надеюсь, я понял вашу концепцию).
A UIViewController
должен иметь 1 сконструированный UIView
и должен управлять значениями этого вида. Как вы сказали, вы можете использовать Containers
, однако вы должны добавить UIViewController
с его представлением, поэтому есть экземпляр, который управляет этим представлением. Твой первый UIViewController
должен только добавить/удалить ChildViewController
.
Так что я бы посоветовал:
Реализовать категории на UIViewController и добавьте следующие методы:
- (void)displayContentController:(UIViewController *)content {
[self addChildViewController:content];
content.view.frame = [[UIScreen mainScreen] bounds];
[self.view addSubview:content.view];
[content didMoveToParentViewController:self];
}
- (void)hideContentController:(UIViewController *)content {
[content willMoveToParentViewController:nil];
[content.view removeFromSuperview];
[content removeFromParentViewController];
}
Создать AViewController
и BViewController
. В AViewController
вызова (viewDidLoad?):
BViewController *bViewController = [[BViewController alloc] init];
[self displayContentController:bViewController];
BViewController
В управлении вид этого контроллера. AViewController
должен управлять только, когда показывать BViewController и когда его скрывать.
Если я не понял ваш вопрос, прокомментируйте его, я удалю этот ответ.
Что вы действительно хотите достичь? –
Не смешивайте раскадровки и программные настройки. Делайте по одному. Нет ничего плохого в смешивании обоих, но вы рискуете запутаться, пока не поймете, как работает раскадровка. –
Возможно, вы захотите переписать '- prepareForSegue: sender:', чтобы управлять разными сегментами на основе 3-х условий. Или не перейдите, но перейдите к новому контроллеру представления программным способом или вызовите определенный сегмент из панели рассказов с помощью '- performSegueWithIdentifier: sender:' –