SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
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
Présentation - Décembre 2012
NIB                XIB             Storyboard Améliorations
Héritage NeXT   Interface Builder 3     Xcode 4     Xcode 4.5.2




                 Historique
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

                          Scène
                                               Attributs
                                               de la Segue
                                Dock   Segue



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
           jeanmarc.lacoste@ambre-systems.com



Jean-Marc LACOSTE - Ambre Systems

Contenu connexe

Tendances

Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads parisCocoaHeads France
 
Introduction to WebRTC on iOS
Introduction to WebRTC on iOSIntroduction to WebRTC on iOS
Introduction to WebRTC on iOSCocoaHeads France
 
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads France
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetCocoaHeads France
 
Présentation iBeacon (cocoaheads toulouse)
Présentation iBeacon (cocoaheads toulouse)Présentation iBeacon (cocoaheads toulouse)
Présentation iBeacon (cocoaheads toulouse)Arnaud Boudou
 
Decouvrez CreateJS
Decouvrez CreateJSDecouvrez CreateJS
Decouvrez CreateJSFCHAPLIN
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureCocoaHeads France
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec BitriseCocoaHeads France
 
Fastlane snapshot presentation
Fastlane snapshot presentationFastlane snapshot presentation
Fastlane snapshot presentationCocoaHeads France
 
Introduction à Play Framework 2
Introduction à Play Framework 2Introduction à Play Framework 2
Introduction à Play Framework 2Samy Dindane
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 
Firebase par nicolas lehovetzki
Firebase par nicolas lehovetzkiFirebase par nicolas lehovetzki
Firebase par nicolas lehovetzkiCocoaHeads France
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Cédric Leblond
 

Tendances (20)

Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads paris
 
Ns operationqueue
Ns operationqueueNs operationqueue
Ns operationqueue
 
Plugins Xcode
Plugins XcodePlugins Xcode
Plugins Xcode
 
Introduction to WebRTC on iOS
Introduction to WebRTC on iOSIntroduction to WebRTC on iOS
Introduction to WebRTC on iOS
 
Nouveauté iOS 6
Nouveauté iOS 6Nouveauté iOS 6
Nouveauté iOS 6
 
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey Bocquet
 
Présentation iBeacon (cocoaheads toulouse)
Présentation iBeacon (cocoaheads toulouse)Présentation iBeacon (cocoaheads toulouse)
Présentation iBeacon (cocoaheads toulouse)
 
Decouvrez CreateJS
Decouvrez CreateJSDecouvrez CreateJS
Decouvrez CreateJS
 
Python + ansible = ♥
Python + ansible = ♥Python + ansible = ♥
Python + ansible = ♥
 
iTunes Stats
iTunes StatsiTunes Stats
iTunes Stats
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume Faure
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Fastlane snapshot presentation
Fastlane snapshot presentationFastlane snapshot presentation
Fastlane snapshot presentation
 
Introduction à Play Framework 2
Introduction à Play Framework 2Introduction à Play Framework 2
Introduction à Play Framework 2
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Firebase par nicolas lehovetzki
Firebase par nicolas lehovetzkiFirebase par nicolas lehovetzki
Firebase par nicolas lehovetzki
 
3D Touch
3D Touch3D Touch
3D Touch
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 

Similaire à Transition de NIBs/XIBs vers Storyboards

Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéNicolas Deverge
 
Je configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtoolsJe configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtoolsRonan Amicel
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressourceAntoine Pouch
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023SpikeeLabs
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Barre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseBarre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseYannick Pavard
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudAlain Ganuchaud
 
Alphorm.com Formation LXC
Alphorm.com  Formation LXCAlphorm.com  Formation LXC
Alphorm.com Formation LXCAlphorm
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Ori Pekelman
 

Similaire à Transition de NIBs/XIBs vers Storyboards (20)

Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
Hello xcode 4 v2
Hello xcode 4 v2Hello xcode 4 v2
Hello xcode 4 v2
 
Hello Xcode 4 v2
Hello Xcode 4 v2Hello Xcode 4 v2
Hello Xcode 4 v2
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & Agilité
 
Je configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtoolsJe configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtools
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressource
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Les nouveautés de PowerShell 3.0
Les nouveautés de PowerShell 3.0Les nouveautés de PowerShell 3.0
Les nouveautés de PowerShell 3.0
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Barre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseBarre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et Eclipse
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Alphorm.com Formation LXC
Alphorm.com  Formation LXCAlphorm.com  Formation LXC
Alphorm.com Formation LXC
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
 

Plus de CocoaHeads France

Plus de CocoaHeads France (20)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 
Handle the error
Handle the errorHandle the error
Handle the error
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 
What's new in iOS9
What's new in iOS9What's new in iOS9
What's new in iOS9
 

Transition de NIBs/XIBs vers Storyboards

  • 1. 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 Présentation - Décembre 2012
  • 2. NIB XIB Storyboard Améliorations Héritage NeXT Interface Builder 3 Xcode 4 Xcode 4.5.2 Historique
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. Structure d’un Storyboard Scène Attributs de la Segue Dock Segue Jean-Marc LACOSTE - Ambre Systems
  • 7. 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
  • 8. Transition modale simple • Segue de type modal • Obligation de faire le retour «manuellement» (par code) :-( • Sauf avec du Curl :-) Jean-Marc LACOSTE - Ambre Systems
  • 9. Transition modale simple Jean-Marc LACOSTE - Ambre Systems
  • 10. 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
  • 11. Mécanismes de navigation • Navigation Controller • TabBar Controller • TabBar + Navigation • SplitView Controller • TabBar + SplitView • etc. Jean-Marc LACOSTE - Ambre Systems
  • 12. Démos • Exemples rapides de construction dans un storyboard Jean-Marc LACOSTE - Ambre Systems
  • 13. Custom Segue • Spécifier une transition personnalisée Jean-Marc LACOSTE - Ambre Systems
  • 14. 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
  • 15. Segue et TableView • Modification de transition • Utilisation des identifiants de segue • Changer ses habitudes Jean-Marc LACOSTE - Ambre Systems
  • 16. Unwind segue et passage arrière • Passage arrière par delegate • Passage arrière par unwind segue • Démo Jean-Marc LACOSTE - Ambre Systems
  • 17. Questions ? • Exemples et pdfs disponibles sur http:// jeanmarc.lacoste.free.fr/sb/sb.pdf • Mail jeanmarc.lacoste@ambre-systems.com Jean-Marc LACOSTE - Ambre Systems