Transition de NIBs/XIBs vers Storyboards
-
Upload
cocoaheads-france -
Category
Technology
-
view
3.399 -
download
2
description
Transcript of Transition de NIBs/XIBs vers Storyboards
Présentation - Décembre 2012
Transition de NIBs/XIBs
vers Storyboards
Jean-Marc LACOSTE - Ambre SystemsFormateur/Consultant
Développeur iOS/UNIX/LinuxAdministrateur Système Unix/Linux/MacOSX
Formation et Services
Historique
NIBHéritage NeXT
XIBInterface Builder 3
StoryboardXcode 4
AméliorationsXcode 4.5.2
Jean-Marc LACOSTE - Ambre Systems
Les NIBs/XIBs
• Habitude de programmation bien maîtrisée
• Généralement 1 NIB/XIB = 1 View Controller
• Transition manuelles (dans le code)
• nib2objc (Adrian Kosmaczewski)
Jean-Marc LACOSTE - Ambre Systems
Les Storyboards
• Vue naturelle du Storyboard «papier»
• Meilleure vision des transitions
• Adapter et porter le code
• Nouvelles habitudes et méthodes
• Possibilité de mélanger storyboards et XIBs
• Incompatibilité avec iOS4- (< 20% parc)
• Travail en groupe plus «délicat»
Jean-Marc LACOSTE - Ambre Systems
Poser un nouveau Storyboard
• Dans un projet «Empty Application»
• Ajouter une nouvelle Resource > Storyboard
• Lier la ressource à l’appareil
• Contrôler le fichier plist
• Modifier le didFinishLaunchingWithOptions:
Jean-Marc LACOSTE - Ambre Systems
Structure d’un Storyboard
Segue
Attributsde la Segue
Scène
Dock
Jean-Marc LACOSTE - Ambre Systems
Segue
• Emprunté à l’Italien segue qui signifie suit (...)http://fr.wiktionary.org/wiki/segue
• Le segue est une transition possédant ses propres attributs
Jean-Marc LACOSTE - Ambre Systems
Transition modale simple
• Segue de type modal
• Obligation de faire le retour «manuellement» (par code) :-(
• Sauf avec du Curl :-)
Jean-Marc LACOSTE - Ambre Systems
Transition modale simple
Jean-Marc LACOSTE - Ambre Systems
Transition manuelle
• Possibilité d’utiliser le storyboard «à l’ancienne»
• Invocation manuelle d’un ViewController spécifique
-(IBAction)clicVersVC2:(id)sender { viewController2 = [[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:NULL] instantiateViewControllerWithIdentifier:@"monVC2"]; [self.view addSubview:viewController2.view];}
Jean-Marc LACOSTE - Ambre Systems
Mécanismes de navigation
• Navigation Controller
• TabBar Controller
• TabBar + Navigation
• SplitView Controller
• TabBar + SplitView
• etc.
Jean-Marc LACOSTE - Ambre Systems
Démos
• Exemples rapides de construction dans un storyboard
Jean-Marc LACOSTE - Ambre Systems
Custom Segue
• Spécifier une transition personnalisée
Jean-Marc LACOSTE - Ambre Systems
Segue et TableView
• Remplacer didSelectRowAtIndexPath: par prepareForSegue: comme «déclencheur»
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Choix %@ se trouvant à l'index %d", [liste1 objectAtIndex:indexPath.row], indexPath.row); DetailViewController_iPhone *viewController = [[DetailViewController_iPhone alloc] init]; [self.navigationController pushViewController:viewController animated:YES];}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"versDetail"]) { NSIndexPath *selectedRowIndex = [self.tableView1 indexPathForSelectedRow]; DetailViewController_iPhone *viewController = [segue destinationViewController]; viewController.leChoix = str; }}
Jean-Marc LACOSTE - Ambre Systems
Segue et TableView
• Modification de transition
• Utilisation des identifiants de segue
• Changer ses habitudes
Jean-Marc LACOSTE - Ambre Systems
Unwind segue et passage arrière
• Passage arrière par delegate
• Passage arrière par unwind segue
• Démo
Jean-Marc LACOSTE - Ambre Systems
Questions ?
• Exemples et pdfs disponibles sur http://jeanmarc.lacoste.free.fr/sb/sb.pdf
• Mail [email protected]