Изменение размера контроллера дочернего представления без ограничений (автоматическое расположение) в представлении контейнера
Я хочу использовать контейнерное представление с двумя дочерними контроллерами представления. Но проблема в том, что когда я обновляю кадр контроллеров дочерних представлений с помощью кода ниже, нижняя часть контроллера дочерних представлений не видна.
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
firstVC = [self.storyboard instantiateViewControllerWithIdentifier:@"firstViewController"];
secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"secondViewController"];
}
- (void)removeViewController
{
[currentVC.view removeFromSuperview];
[currentVC removeFromParentViewController];
}
- (void)bindToViewController:(UIViewController *)targetVC
{
if (currentVC != nil)
{
[self removeViewController];
}
[self addChildViewController:targetVC];
targetVC.view.frame = self.containerView.frame;
[self.containerView addSubview:targetVC.view];
currentVC = targetVC;
}
- (IBAction)firstOpen:(id)sender
{
[self bindToViewController:firstVC];
}
- (IBAction)secondOpen:(id)sender
{
[self bindToViewController:secondVC];
}
@end
Есть решения с ограничениями, но раскадровка моего проекта не использует Auto Layout (ограничения). Есть ли мнение о решении моей проблемы?
(Может быть, мне нужно найти другой способ проектирования без использования контейнера)
****** РЕДАКТИРОВАТЬ 1 ******
Я добавил didMoveToParentViewController в конце bindToViewController, но без изменений.
- (void)bindToViewController:(UIViewController *)targetVC
{
if (currentVC != nil)
{
[self removeViewController];
}
[self addChildViewController:targetVC];
targetVC.view.frame = self.containerView.frame;
[self.containerView addSubview:targetVC.view];
currentVC = targetVC;
[targetVC didMoveToParentViewController:self];
}
****** РЕДАКТИРОВАТЬ 2 - Решение ******
Попробовал предложение Андре Слотты, это сработало!
- (void)bindToViewController:(UIViewController *)targetVC
{
if (currentVC != nil)
{
[self removeViewController];
}
[self addChildViewController:targetVC];
// targetVC.view.frame = self.containerView.frame;
targetVC.view.frame = self.containerView.bounds;
[self.containerView addSubview:targetVC.view];
currentVC = targetVC;
}
1 ответ
Должно быть targetVC.view.frame = self.containerView.bounds;
вместо targetVC.view.frame = self.containerView.frame;
,