transition de nibs/xibs vers storyboards

17
Présentation - Décembre 2012 Transition de NIBs/XIBs vers Storyboards Jean-Marc LACOSTE - Ambre Systems Formateur/Consultant Développeur iOS/UNIX/Linux Administrateur Système Unix/Linux/MacOSX Formation et Services

Upload: cocoaheads-france

Post on 15-May-2015

3.399 views

Category:

Technology


2 download

DESCRIPTION

Transition de NIBs/XIBs vers Storyboards

TRANSCRIPT

Page 1: 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

Page 2: Transition de NIBs/XIBs vers Storyboards

Historique

NIBHéritage NeXT

XIBInterface Builder 3

StoryboardXcode 4

AméliorationsXcode 4.5.2

Page 3: Transition de NIBs/XIBs vers Storyboards

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)

Page 4: Transition de NIBs/XIBs vers Storyboards

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»

Page 5: Transition de NIBs/XIBs vers Storyboards

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:

Page 6: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Structure d’un Storyboard

Segue

Attributsde la Segue

Scène

Dock

Page 7: Transition de NIBs/XIBs vers Storyboards

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

Page 8: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Transition modale simple

• Segue de type modal

• Obligation de faire le retour «manuellement» (par code) :-(

• Sauf avec du Curl :-)

Page 9: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Transition modale simple

Page 10: Transition de NIBs/XIBs vers Storyboards

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];}

Page 11: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Mécanismes de navigation

• Navigation Controller

• TabBar Controller

• TabBar + Navigation

• SplitView Controller

• TabBar + SplitView

• etc.

Page 12: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Démos

• Exemples rapides de construction dans un storyboard

Page 13: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Custom Segue

• Spécifier une transition personnalisée

Page 14: Transition de NIBs/XIBs vers Storyboards

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; }}

Page 15: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Segue et TableView

• Modification de transition

• Utilisation des identifiants de segue

• Changer ses habitudes

Page 16: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Unwind segue et passage arrière

• Passage arrière par delegate

• Passage arrière par unwind segue

• Démo

Page 17: Transition de NIBs/XIBs vers Storyboards

Jean-Marc LACOSTE - Ambre Systems

Questions ?

• Exemples et pdfs disponibles sur http://jeanmarc.lacoste.free.fr/sb/sb.pdf

• Mail [email protected]