J'ai un fichier .xib et je veux lui ajouter une vue conteneur (à placer dans un ViewController). Malheureusement, une vue de conteneur n'est disponible que par storyboard. Mais quand je crée un fichier .xib et que je recherche le contrôleur de vue de conteneur, je ne le trouve pas. Quelqu'un peut-il me donner des conseils pour réaliser ma tâche?
Si vous utilisez un xib
au lieu d'un storyboard
, vous pouvez simplement ajouter un simple UIView
au xib
pour agir comme un conteneur. Ensuite, dans le code, ajoutez le view
de votre childViewController comme sous-vue du conteneur. Ici, j'ai suivi les méthodes appropriées du contrôleur de vue enfant et ajouté des contraintes de mise en page pour assurer la mise à jour de son cadre avec le cadre du conteneur:
- (void)viewDidLoad {
[super viewDidLoad];
UIViewController *childViewController = ...; // create your child view controller
[self addChildViewController:childViewController];
[self.containerView addSubview:childViewController.view];
[childViewController didMoveToParentViewController:self];
NSArray *horzConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[childView]|"
options:0
metrics:nil
views:@{@"childView" : childViewController.view}];
NSArray *vertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[childView]|"
options:0
metrics:nil
views:@{@"childView" : childViewController.view}];
[self.view addConstraints:horzConstraints];
[self.view addConstraints:vertConstraints];
childViewController.view.translatesAutoresizingMaskIntoConstraints = NO;
}
Vérifie ça:
SelectDateViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"selectDateVCID"];
[self addChildViewController:vc];
[vc.view setFrame:CGRectMake(0.0f, 0.0f, self.selectDateContainerView.frame.size.width, self.selectDateContainerView.frame.size.height)];
[self.selectDateContainerView addSubview:vc.view];
[vc didMoveToParentViewController:self];