2015-09-21 1 views
1

J'ai configuré une vue de conteneur à l'intérieur de mon contrôleur de vue principal. J'ai configuré ceci par l'intermédiaire du constructeur d'interface. Le contrôleur de la vue principale contient la vue du conteneur et j'ai une classe personnalisée (dérivée de UIViewController) pour gérer le travail dans le contrôleur de la vue du conteneur. J'ai mis en place tous les widgets dans la vue conteneur, et tout fonctionne bien. Maintenant, j'ai trouvé un cas où je voudrais réutiliser ce même code dans un contrôleur de vue différent.Réutilisation d'une vue de conteneur dans plusieurs contrôleurs de vue

Alors j'ai commencé avec ce qui suit pour vérifier le code était en cours de dégâts infligés:

iPad_Expansion_ContViewController *kaufer = [iPad_Expansion_ContViewController new]; 
    [gameController addChildViewController:kaufer]; 

    kaufer.view.frame = CGRectMake(100, 200, 500, 500); 
    kaufer.view.backgroundColor = [UIColor blueColor]; 

    [gameController.view addSubview:kaufer.view]; 
    [gameController.view bringSubviewToFront:kaufer.view]; 

    [kaufer didMoveToParentViewController:gameController]; 

Cela ne crée en effet une grande boîte bleue; cependant, comment charger le contenu du containerViewController que j'ai défini via le constructeur d'interface? Je pense que j'ai besoin de quelque chose comme ce qui suit, mais je ne sais pas où trouver le nom NIB créé via Interface Builder. De toute ma recherche sur le Web, il semble que trouver le nom NIB est trivial et évident. Mais il me manque toujours quelque chose ... J'ai essayé d'utiliser le nom du story-board; cependant, tous les objets de kaufer étaient nuls et aucune vue n'apparaissait à l'écran.

Répondre

0

Eh bien, cela a été un après-midi très éprouvant. Je n'étais pas fou (du moins pas sur ce point): il est plus difficile de trouver le nom de fichier .xib viewControllers dans un storyboard à partir de Xcode 6.4 que dans les versions précédentes. Ces deux questions ne résout pas complètement le problème, mais ils ont fourni les principaux indices qui me ont à bouger:

Use initWithNibName with a storyboard

STORYBOARD - doesn't contain a view controller with identifier (réponse de Khaliq)

Et sans plus tarder, j'Unleash sur la Internet le (suivant) extrait de code suivant:

UIStoryboard *storyboard = self.storyboard; 
    myCustomContViewController *kaufer = (myCustomContViewController *)[storyboard instantiateViewControllerWithIdentifier:@"shopper"]; 
    [mainController addChildViewController:kaufer]; 

    [mainController.view addSubview:kaufer.view]; 
    [mainController.view bringSubviewToFront:kaufer.view]; 

    [kaufer didMoveToParentViewController:mainController];