2011-11-19 3 views
1

J'étudiais Storyboard sur le nouveau iOS 5.0. Il semble vraiment simple à utiliser et à implémenter mais ma question est ... Comment puis-je mettre à jour l'ancien Xib vers Storyboard?Xib Vs Storyboard, comment mettre à jour

Par exemple. J'ai développé des classes quand il n'y avait pas de storyboard et certaines de ces classes viennent avec un fichier xib qui m'aide à configurer une mise en page personnalisée rapidement. Évidemment, quand j'utilise ce type de classe, j'ai besoin de l'instancier en utilisant initWithNibName: bundle: et il est maintenant prêt à l'emploi et je peux l'utiliser autant de fois que nécessaire parce que layout est codé dans xib. Maintenant Storyboard ... Storyboard ne permet pas de charger le contrôleur de vue depuis xib et je n'ai pas trouvé le moyen de charger le fichier du storyboard dans le storyboard principal. Il semble que j'ai besoin de reconfigurer la mise en page pour un contrôleur de vue particulier chaque fois que je l'utilise dans un nouveau projet. Il semble que maintenant je suis obligé de reconfigurer la disposition de mon contrôleur dans chaque nouvelle application qui utilise ce contrôleur au lieu d'utiliser le fichier xib qui a la mise en page à l'intérieur.

Peut-être qu'il y a quelque chose que je n'ai pas compris. Tout le monde peut m'aider à comprendre la meilleure façon d'utiliser le storyboard?

Merci d'avance.

Gabriele.

EDIT en réponse à sw3n

Peut-être que je compris grâce à sw3n. Ce code ci-dessous fonctionne mais est-ce complètement correct?

// All this code is implemented inside the MyViewController class. 

// Attached to an UIButton; 
- (void)loadNewController:(id)sender { 
    [self performSegueWithIdentifier:@"newControllerIdentifier" sender:sender]; 
} 

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    // As suggested by sw3n 
    // Load the storyboard from file. 
    UIStoryboard *storyboardTest = [UIStoryboard storyboardWithName:@"StoryBoardLoad_Test" bundle:nil]; 
    // Instantiate the viewController that live in the storyboard file 
    UIViewController *destinationViewController = [storyboardTest instantiateViewControllerWithIdentifier:@"newControllerIdentifier"]; 

    // Instantiate a segue to start the chain 
    UIStoryboardSegue *segue = [[UIStoryboardSegue alloc] initWithIdentifier:identifier source:self destination:destinationViewController]; 
    [self prepareForSegue:segue sender:sender]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"newControllerIdentifier"]) { 
     [segue.destinationViewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 

     // Are there new options to present the controller? 
     // If I was in a NavigationController a could obviously push it. 
     [self presentModalViewController:segue.destinationViewController animated:YES]; 
    } 
} 

Répondre

3

Est-ce ce que vous cherchez?

(UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil 
0

Interface Builder:

  1. sélectionnez le Segue dans votre contrôleur de vue
  2. aller à l'onglet Attributs
  3. donner le Segue un nom
  4. définir le style de transition

Dans le code:

[self performSegueWithIdentifier:@"mySegueNameFromInterfaceBuilder" sender:self]; 
+0

Cela ne répond pas à ma question. C'est ainsi que le storyboard fonctionne dans un seul fichier .storyboard. Je suis intéressé par l'utilisation du fichier de storyboard multiple. – Gabriele

2

Sonner un peu en retard pour répondre, mais semblent avoir aucune conclusion à la réponse. Vous pouvez utiliser storyboardWithName() comme Nightfirecat mentionné ci-dessus. Créez le nouveau Viewcontroller à partir de UIStoryboard et accrochez le nouveau ViewController à l'emplacement souhaité dans la hiérarchie de vue. Vous pouvez également utiliser plusieurs fichiers de storyboard pour segmenter votre conception UX. J'ai écrit quelque chose sur la façon de l'accrocher en tant que rootcontroller sur mon site, mais cela devrait fonctionner n'importe où.

Questions connexes