SlideShare une entreprise Scribd logo
1  sur  139
Télécharger pour lire hors ligne
SDK iPhone ,[object Object]
Présentation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Plan de formation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Plan de formation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1. Introduction
1. Introduction ,[object Object],[object Object],[object Object],Téléchargement du SDK
1. Introduction ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Caractéristiques d’une application
1. Introduction Programmation Cocoa ,[object Object],NSString NSNumber NSArray NSMutableArray NSDictionary NSMutableDictionary NSDate int BOOL ,[object Object],Autres langages :  alert.show(); En Objective-C :  [alert show];
1. Introduction Programmation Cocoa ,[object Object],Autres langages :  alert.show("A Funny Message", 3); En Objective-C :   [alert show:@"I say this!" thisManyTimes:3]; ,[object Object],myClass *myObject = [[myClass alloc] init]; ,[object Object],[myObject release];
1. Introduction Programmation Cocoa ,[object Object],[object Object],Management manuel de la mémoire avec le «Comptage des références» Le système garde en mémoire les objets dont leur référence est différente à 0. Chaque composant qui nécessite d’utiliser un objet augmente sa référence de 1. myClass *myObject = [[myClass alloc] init]; ... [myObject doStuff]; ... [myObject release];
1. Introduction Programmation Cocoa ,[object Object],NSString *lotsOfInsertedStuffString = [NSString stringWithFormat:@"I am adding this number: %i and this string:%@.", 45, myString]; NSLog(lotsOfInsertedStuffString); NSString *myString = [[NSString alloc] initWithString:@"A String"]; NSLog(myString); [myString release]; Ou NSString *myString = @"A String"; NSLog(myString);
1. Introduction Programmation Cocoa ,[object Object],On peut utiliser de la classe NSNumber ou les types en C : int i = 3; NSLog(@"i = %i", i); double d = 3.4; NSLog(@"d = %f", d); double dPlusi = d + i; NSLog(@"d + i = %f", dPlusi);
1. Introduction Programmation Cocoa ,[object Object],NSMutableArray *myArray = [[NSMutableArray alloc] init]; [myArray addObject:@"Element 1"]; [myArray addObject:@"Element 2"]; NSLog([myArray objectAtIndex:0]);  NSLog([myArray lastObject]); for (NSString *s in myArray) { NSLog(s); } [myArray release];
2. Création d’un projet
2. Création d’un projet
2. Création d’un projet Xcode
2. Création d’un projet Application Delegate ,[object Object],[object Object],[object Object],Cette classe est obligatoire pour toute application IPhone, elle se conforme au protocole UIApplicationDelegate et implémente la méthode -(void)applicationDidFinishLaunching... Cette méthode est appelée directement après le lancement de l'application.
2. Création d’un projet Frameworks Comme son nom l'indique, cette partie contient les "includes" des Frameworks utilisés dans le projet.  Par défaut, vous avez les 3 principaux: UIKit, Foundation et CoreGraphics. Products Contient le fichier généré par la compilation, à savoir l’application
2. Création d’un projet ,[object Object],[object Object],[object Object],Interface Builder
2. Création d’un projet MainWindow.xib Ce fichier permet de créer les instances de «Application Delegate», de la fenêtre principale et du «View Controller» lors de la compilation Instance de Button_FunAppDelegate Instance de  Button_FunViewController Fenêtre unique  de l’application
2. Création d’un projet ,[object Object],[object Object],[object Object],Ajout d’une icône à l’application
2. Création d’un projet ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3. Programmation
3. Programmation ,[object Object],[object Object],[object Object],[object Object],[object Object],Concept du «Modèle-Vue-Contrôleur» ,[object Object],[object Object],[object Object],[object Object]
3. Programmation ,[object Object],[object Object],[object Object]
3. Programmation Classe Controller.h Sous classe de  UIViewController
3. Programmation Les pointeurs Déclaration : Les fonctions Déclaration : Eviter de devoir définir  les accesseurs et les mutateurs Options de création des  accesseurs et mutateurs  par le compilateur Les accesseurs Identiques
3. Programmation Les types de données : NSString NSNumber NSArray NSMutableArray NSDictionary NSMutableDictionary NSDate int BOOL Exemple : .h : NSNumber  * my_number ; @property  ( nonatomic ,  retain ) NSNumber *  my_number ; .m : @synthesize  my_number;
3. Programmation Classe Controller.m
3. Programmation Classe Controller.m
3. Programmation ,[object Object],[object Object],[object Object]
3. Programmation Exercice 2 : Correction .h .m Création des accesseurs et mutateurs Implémentation de la fonction
3. Programmation Exercice 2 : Correction .m Concernant l’allocation  ... ou ...
3. Programmation Connecter des pointeurs 1. Relier le File’s Owner au Label pour créer la connexion 2. Choisir le pointeur
3. Programmation Spécifier les actions 1. Choisir l’action 2. Choisir l’évènement et glisser à partir du cercle à droite jusqu’au File’s Owner 3. Sélectionner dans la pop-up la méthode à exécuter
3. Programmation ,[object Object],[object Object],[object Object]
4. Interface utilisateur
4. Interface utilisateur ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4. Interface utilisateur Liste des images disponibles Paramètres de Image View : Permet de définir comment l’image se trouve par rapport à la vue dans laquelle elle se situe Appliquer un effet de transparence à l’image Pas d’impact sur une image Assigner un identifiant à cette image Permet de modifier la manière dont l’image est dessinée Permet à l’utilisateur d’effectuer des interactions Permet de recevoir plusieurs évènement de multi touche
4. Interface utilisateur Valeur par défaut Paramètres de Text Field : Afficher une légende dans le champs Alignement Modifier l’apparence Type de valeurs possibles dans un Text Field Attributs hérités de UIControl  (Peu sont utiles à ce contrôle)
4. Interface utilisateur ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4. Interface utilisateur ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4. Interface utilisateur ,[object Object],[object Object],.h .m FirstResponder : c’est le contrôle pour lequel l’utilisateur est en train de interagir avec
4. Interface utilisateur Cacher le clavier lorsqu’on touche l’arrière plan .h .m
4. Interface utilisateur Cacher le clavier lorsqu’on touche l’arrière plan Pour que la vue soit capable de capturer les actions, elle doit faire partie de la classe UIControl ,[object Object]
4. Interface utilisateur Valeurs minimum et maximum du slider Paramètres du Slider : Valeur initiale Propriétés habituelles Images du début et de la fin
4. Interface utilisateur ,[object Object],[object Object]
4. Interface utilisateur Implémentation du Slider .h .m
4. Interface utilisateur ,[object Object],[object Object]
4. Interface utilisateur Implémentation du Switch et du Segmented Control .h
4. Interface utilisateur Implémentation du Switches, des Buttons et du Segmented Control .m Permet de cacher les boutons ou les switches en fonction de la valeur du segmentedControl
4. Interface utilisateur ,[object Object],[object Object],UIActionSheet UIAlertView
4. Interface utilisateur Implémentation de l’ActionSheet .h .m Déclaration du protocole
4. Interface utilisateur .m Implémentation de l’AlertView Méthode déléguée Créer une alerte L’AlerteView possède aussi des méthodes déléguées (Il faut donc les déclarer en protocole dans le .h) mais ici, on ne s’en sert pas donc pas de déclaration
4. Interface utilisateur viewDidLoad et viewDidUnload ,[object Object],[object Object]
5. Rotation et dimensionnement
5. Rotation et dimensionnement ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
5. Rotation et dimensionnement Autosizing : ,[object Object]
5. Rotation et dimensionnement Redimensionnement : ,[object Object],[object Object]
5. Rotation et dimensionnement Redimensionnement manuel : ,[object Object]
5. Rotation et dimensionnement Création de deux vues : ,[object Object]
6. Applications à vues multiples
6. Applications à vues multiples Navigation Bar Tab Bar et Navigation Bar Classe : UINavigationController Classe : UITabBarController
6. Applications à vues multiples ,[object Object],[object Object],[object Object],[object Object]
6. Applications à vues multiples ,[object Object],[object Object],[object Object],[object Object]
6. Applications à vues multiples ,[object Object],[object Object],[object Object],[object Object]
6. Applications à vues multiples Exercice 4  : Modification de l’App Delegate View_SwitcherAppDelegate.h ,[object Object]
6. Applications à vues multiples Exercice 4  : Modification de l’App Delegate View_SwitcherAppDelegate.m
6. Applications à vues multiples Exercice 4  : SwitchViewController.h ,[object Object],[object Object],[object Object]
6. Applications à vues multiples Exercice 4  : Modification de MainWindow.xib ,[object Object],[object Object],[object Object],[object Object]
6. Applications à vues multiples Exercice 4  : Implémentation de SwitchViewController.m Allocation de la vue bleue On l’insère dans le contrôleur On alloue la vue jaune Si le contrôleur jaune existe mais sa vue n’est pas au premier plan ou si le contrôleur n’a pas encore été instancié On retire la vue bleue et on la remplace par la vue jaune Si la vue jaune n’est pas allouée
6. Applications à vues multiples Exercice 4  : Implémentation de SwitchViewController.m On alloue la vue bleue Sinon le contrôle bleu existe mais sa vue n’est pas au premier plan ou si le contrôleur n’a pas été instancié On retire la vue jaune et on la remplace par la vue bleue Si la vue bleue n’est pas allouée Ne pas oublier de désallouer
6. Applications à vues multiples Exercice 4  : Implémentation des alertes ,[object Object]
6. Applications à vues multiples Exercice 4  : Appliquer une transition ... ... Timming de transition Durée Déclaration Type de transition A utiliser si on a surchargé ces méthodes dans les contrôleurs A utiliser si on surcharge  ces méthodes dans les contrôleurs Permet d’enregistrer les animations et de lancer les transitions
7. Tab Bars et Pickers
7. Tab Bars et Pickers ,[object Object],[object Object],[object Object],[object Object]
7. Tab Bars et Pickers Exercice 5  : Ajout du Root View Controller .h .m
7. Tab Bars et Pickers Exercice 5  : Ajout du Root View Controller ,[object Object],[object Object],[object Object],[object Object]
7. Tab Bars et Pickers Exercice 5  : Ajout du Root View Controller ,[object Object],[object Object],[object Object],Icône rouge pour afficher des infos Appliquer un style prédéfini à l’item Customiser l’apparence de l’item
7. Tab Bars et Pickers Exercice 5  : Implémentation de Date Picker ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
7. Tab Bars et Pickers Exercice 5  : Implémentation de Date Picker
7. Tab Bars et Pickers Exercice 5  : Single Compenent Picker ,[object Object],[object Object],[object Object],.h ,[object Object],[object Object],[object Object]
7. Tab Bars et Pickers Exercice 5  : Single Compenent Picker Initialisation d’un array
7. Tab Bars et Pickers Exercice 5  : Single Compenent Picker Instructions pour le compilateur Fournir au Picker, la valeur à mettre dans un champ donné pour un composant donné
7. Tab Bars et Pickers Exercice 5  : Multicompenent Picker ,[object Object],[object Object],[object Object],.h ,[object Object]
7. Tab Bars et Pickers Exercice 5  : Multicompenent Picker
7. Tab Bars et Pickers Exercice 5  : Multicompenent Picker
7. Tab Bars et Pickers NSDictionary et NSArray
7. Tab Bars et Pickers Exercice 5  : Depedent Components ,[object Object],[object Object],[object Object],.h ,[object Object]
7. Tab Bars et Pickers Exercice 5  : Depedent Components
7. Tab Bars et Pickers Exercice 5  : Depedent Components Permet de récupérer les ressources que l’on a importé dans le projet Permet de récupérer toutes les clés du dictionnaire Permet de trier par ordre alphabétique l’array
7. Tab Bars et Pickers Exercice 5  : Depedent Components
8. Table Views
8. Table Views ,[object Object],Une seule colonne par vue, lignes facilement modifiables Chaque ligne peut contenir des sous-vues Stockage uniquement des lignes visibles à l’écran UITableViewDataSource et UITableViewDelegate
8. Table Views ,[object Object],Grouped table Plain table sans index Plain table avec index
8. Table Views ,[object Object]
8. Table Views ,[object Object],[object Object],[object Object],[object Object],[object Object]
8. Table Views Exercice 6 : Une simple Table View Nombre de lignes par sections Pour afficher une ligne donnée indexPath contient la section et la ligne Pour créer une cellule en réutilisant l’id défini précédemment Identifiant unique d’une cellule Si la tableView ne possède pas de cellule partagée On retourne la cellule
8. Table Views Exercice 6 : Ajout d’une image dans chaque ligne propriété imageView
8. Table Views Style des lignes ■  Image: permet d’afficher une image à gauche de la ligne ■  Text Label: correspondant au texte principal de la ligne ■  Detail Text Label: permet d’ajouter une note, un label à ligne en dessous du texte principal Indentation des lignes
8. Table Views Sélection d’une ligne ■  Avant de sélectionner une ligne ■  Après sélection d’une ligne
8. Table Views Taille d’une ligne Taille du texte
8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 ,[object Object],[object Object],[object Object]
8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Déclaration de nos sources de données
8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Création manuelle de la cellule : ajout du label «Name»
8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Création manuelle de la cellule : ajout du label «Color» Création manuelle de la cellule : ajout du label «nameValue» Création manuelle de la cellule : ajout du label «colorValue»
8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Ajout les valeurs aux deux champs
8. Table Views Exercice 8 : Création de CustomCell.h, exemple 2  ,[object Object],[object Object],[object Object],[object Object],[object Object]
8. Table Views Exercice 8 : Création de CustomCell.h, exemple 2  ,[object Object],[object Object],[object Object],[object Object],[object Object]
8. Table Views Exercice 8 : Création de CustomCell.h, exemple 2  ,[object Object],Création de la cellule à partir du nib Obtenir tous les objets du nib
8. Table Views Exercice 8 : Création de CustomCell.h, exemple 2  ,[object Object],Pour spécifier que l’on a changé la taille de la cellule .h
8. Table Views Exercice 9 :  ,[object Object]
8. Table Views Points importants Ajouter un index Implémentation d’un barre de recherche Principe Créer un dictionnaire immutable qui contient tout les données ainsi qu’un dictionnaire mutable qui contiendra tous les résultats lors d’une recherche Problème : mutableCopy ne copie pas en profondeur les array et copie uniquement les références Solution : Créer soit meme une fonction qui copie en profondeur
8. Table Views Implémentation d’un barre de recherche Deep Mutable Copy .h .m Parcours du dictionnaire original On essaye de copier l’objet via mutable deep copy Si l’objet ne répond pas au message, on tente une mutable copy Si l’objet ne répond pas au message, on tente une simple copie
9. Navigation Controllers
9. Navigation Controllers Etude de l’exemple  « 09  Nav» Mise en place de Navigation Controller
10. Paramètres de l’application
10. Paramètres d’une application ,[object Object],[object Object]
10. Paramètres d’une application ,[object Object],[object Object],[object Object],[object Object],Analyse du fichier Root.plist
10. Paramètres d’une application Analyse du fichier Root.plist
10. Paramètres d’une application Analyse du fichier Root.plist
10. Paramètres d’une application Lecture des paramètres dans l’application Classe NSUserDefaults
10. Paramètres d’une application Ecriture des paramètres dans l’application
11. Persistance des données
11. Persistance des données ,[object Object],[object Object],[object Object],[object Object],[object Object],Créer un chemin d’un fichier Récupérer le dossier de stockage des documents sur l’iPhone Accès au dossier tmp
11. Persistance des données ,[object Object],[object Object],Méthode Inconvénient  :  Les autres objets ne peuvent pas être sauvegardés
11. Persistance des données Méthode 1 :  Property List Lecture des données Ecriture des données
11. Persistance des données ,[object Object],[object Object],[object Object],Encoder Décoder Si on surclasse une classe qui ne conforme pas à NSCoding
11. Persistance des données ,[object Object],[object Object],Décoder Si on surclasse d’autre classes qui ne conforme pas NSCoding NSCopying On crée une nouvelle instance de notre classe et ensuite on assigne les mêmes valeurs aux propriétés Pointeur sur une structure pour la gestion mémoire (Peut important)
11. Persistance des données Méthode 2 :  Archiver les objets Persistance du «Data Object» Archiver les objets dans un NSMutableData Contiendra l’objet encodé Création d’une clé pour encoder n’importe quel objet dans l’archive Désallocation On prévient l’archive que l’on a fini d’encoder nos objets On enregistre l’archive
11. Persistance des données Méthode 2 :  Archiver les objets Persistance du «Data Object» Décoder l’archive Contiendra l’objet décodé Lecture des objets désarchivés avec la clé définie précédemment Désallocation Explorer l’exemple «11 Persistence Archiving»
11. Persistance des données Méthode 3 :  SQLite 3 Ouverture de la base de données Importer le frameworks «libsqlite3.dylib» Fermer la base de données Créer une table
11. Persistance des données Méthode 3 :  SQLite 3 Effectuer des requêtes
11. Persistance des données Méthode 3 :  SQLite 3 Bind Variables pour insérer des champs Explorer l’exemple «11 Persistence SQLite»
11. Persistance des données Méthode 4 :  Core Data Classes permettant de gérer facilement la persistance des données Principe de Core Data basé sur la description des données Pour se faire : création d’entités et d’attributs (un peu comme en UML)  1. Déclaration de l’entité 2. Déclaration d’un attributs 3. Modification des propriétés  de l’attribut
11. Persistance des données Méthode 4 :  Core Data Etablir des relations entre les entités Explorer l’exemple «11 Core Data Persistence»
12. Dessiner avec Quartz
12. Dessiner avec Quartz ,[object Object],[object Object],[object Object],[object Object],Couleurs ,[object Object],[object Object]
12. Dessiner avec Quartz Explorer le projet «QuartzDemo»

Contenu connexe

Tendances

Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...cppfrug
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à pythonMariem ZAOUALI
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Loic Yon
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++cppfrug
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelThierry Gayet
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliquesMariem ZAOUALI
 
Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)otb
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en pythonMariem ZAOUALI
 
Algo vol.2 sujets
Algo vol.2   sujetsAlgo vol.2   sujets
Algo vol.2 sujetschrisdilane
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Microsoft
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Parischristophep21
 

Tendances (19)

Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
Du Polymorphisme dynamique au polymorphisme statique : Abstraction sans perte...
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à python
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appel
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliques
 
Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Algo vol.2 sujets
Algo vol.2   sujetsAlgo vol.2   sujets
Algo vol.2 sujets
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 

En vedette

Paradis Chez Soi
Paradis Chez SoiParadis Chez Soi
Paradis Chez SoiAzis MACh
 
Twitter : présentation complète de l'essentiel
Twitter : présentation complète de l'essentielTwitter : présentation complète de l'essentiel
Twitter : présentation complète de l'essentielJulie Le Vacon
 
Metier informatique
Metier informatique Metier informatique
Metier informatique hatimydriss
 
Publications scientifiques en sciences humaines et sociales à l'ère du numéri...
Publications scientifiques en sciences humaines et sociales à l'ère du numéri...Publications scientifiques en sciences humaines et sociales à l'ère du numéri...
Publications scientifiques en sciences humaines et sociales à l'ère du numéri...verdeil
 
Nouveau microsoft word document
Nouveau microsoft word documentNouveau microsoft word document
Nouveau microsoft word documentkarimfpk
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bdCamille Volant
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosionCHTAOU Karim
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALSDrix78
 
Les dates importantes de l’histoire de l’algérie
Les dates importantes de l’histoire de l’algérieLes dates importantes de l’histoire de l’algérie
Les dates importantes de l’histoire de l’algérienacarEOI
 
L'impact du Web social sur votre avenir
L'impact du Web social sur votre avenirL'impact du Web social sur votre avenir
L'impact du Web social sur votre avenirPhilippe Marchesseault
 
Fibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévitéFibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévitéEurovia_Group
 
Microvia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérenceMicrovia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérenceEurovia_Group
 
Livre numérique, presse numérique (Biblioquest 2013)
Livre numérique, presse numérique (Biblioquest 2013)Livre numérique, presse numérique (Biblioquest 2013)
Livre numérique, presse numérique (Biblioquest 2013)Le Lirographe
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEBrice Kosinski
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesTarik Taleb Bendiab
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsajeanpyXD
 

En vedette (20)

La fin de la propriété intellectuelle?
La fin de la propriété intellectuelle?La fin de la propriété intellectuelle?
La fin de la propriété intellectuelle?
 
Paradis Chez Soi
Paradis Chez SoiParadis Chez Soi
Paradis Chez Soi
 
Twitter : présentation complète de l'essentiel
Twitter : présentation complète de l'essentielTwitter : présentation complète de l'essentiel
Twitter : présentation complète de l'essentiel
 
Metier informatique
Metier informatique Metier informatique
Metier informatique
 
Publications scientifiques en sciences humaines et sociales à l'ère du numéri...
Publications scientifiques en sciences humaines et sociales à l'ère du numéri...Publications scientifiques en sciences humaines et sociales à l'ère du numéri...
Publications scientifiques en sciences humaines et sociales à l'ère du numéri...
 
Nouveau microsoft word document
Nouveau microsoft word documentNouveau microsoft word document
Nouveau microsoft word document
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bd
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosion
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALS
 
Les dates importantes de l’histoire de l’algérie
Les dates importantes de l’histoire de l’algérieLes dates importantes de l’histoire de l’algérie
Les dates importantes de l’histoire de l’algérie
 
L'impact du Web social sur votre avenir
L'impact du Web social sur votre avenirL'impact du Web social sur votre avenir
L'impact du Web social sur votre avenir
 
Fibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévitéFibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévité
 
Microvia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérenceMicrovia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérence
 
Livre numérique, presse numérique (Biblioquest 2013)
Livre numérique, presse numérique (Biblioquest 2013)Livre numérique, presse numérique (Biblioquest 2013)
Livre numérique, presse numérique (Biblioquest 2013)
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINE
 
L’oxydation
L’oxydationL’oxydation
L’oxydation
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiques
 
SRDT Normandie
SRDT NormandieSRDT Normandie
SRDT Normandie
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsa
 
Exo alcool 2
Exo alcool 2Exo alcool 2
Exo alcool 2
 

Similaire à Formation iPhone ENSI by (Orange Tunisie)

Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Fred Brunel
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Saber LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsLilia Sfaxi
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mathias Seguy
 
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
 

Similaire à Formation iPhone ENSI by (Orange Tunisie) (20)

5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
TP_1.pdf
TP_1.pdfTP_1.pdf
TP_1.pdf
 
3D Touch
3D Touch3D Touch
3D Touch
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Tuto bada
Tuto badaTuto bada
Tuto bada
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
DART.pptx
DART.pptxDART.pptx
DART.pptx
 
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
 
Android201710 avrilcours3
Android201710 avrilcours3Android201710 avrilcours3
Android201710 avrilcours3
 
Apple : iOS
Apple : iOSApple : iOS
Apple : iOS
 
My droid
My droidMy droid
My droid
 
Silverlight 4
Silverlight 4Silverlight 4
Silverlight 4
 

Formation iPhone ENSI by (Orange Tunisie)

  • 1.
  • 2.
  • 3.
  • 4.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 16. 2. Création d’un projet Xcode
  • 17.
  • 18. 2. Création d’un projet Frameworks Comme son nom l'indique, cette partie contient les "includes" des Frameworks utilisés dans le projet. Par défaut, vous avez les 3 principaux: UIKit, Foundation et CoreGraphics. Products Contient le fichier généré par la compilation, à savoir l’application
  • 19.
  • 20. 2. Création d’un projet MainWindow.xib Ce fichier permet de créer les instances de «Application Delegate», de la fenêtre principale et du «View Controller» lors de la compilation Instance de Button_FunAppDelegate Instance de Button_FunViewController Fenêtre unique de l’application
  • 21.
  • 22.
  • 24.
  • 25.
  • 26. 3. Programmation Classe Controller.h Sous classe de UIViewController
  • 27. 3. Programmation Les pointeurs Déclaration : Les fonctions Déclaration : Eviter de devoir définir les accesseurs et les mutateurs Options de création des accesseurs et mutateurs par le compilateur Les accesseurs Identiques
  • 28. 3. Programmation Les types de données : NSString NSNumber NSArray NSMutableArray NSDictionary NSMutableDictionary NSDate int BOOL Exemple : .h : NSNumber * my_number ; @property ( nonatomic , retain ) NSNumber * my_number ; .m : @synthesize my_number;
  • 29. 3. Programmation Classe Controller.m
  • 30. 3. Programmation Classe Controller.m
  • 31.
  • 32. 3. Programmation Exercice 2 : Correction .h .m Création des accesseurs et mutateurs Implémentation de la fonction
  • 33. 3. Programmation Exercice 2 : Correction .m Concernant l’allocation ... ou ...
  • 34. 3. Programmation Connecter des pointeurs 1. Relier le File’s Owner au Label pour créer la connexion 2. Choisir le pointeur
  • 35. 3. Programmation Spécifier les actions 1. Choisir l’action 2. Choisir l’évènement et glisser à partir du cercle à droite jusqu’au File’s Owner 3. Sélectionner dans la pop-up la méthode à exécuter
  • 36.
  • 38.
  • 39. 4. Interface utilisateur Liste des images disponibles Paramètres de Image View : Permet de définir comment l’image se trouve par rapport à la vue dans laquelle elle se situe Appliquer un effet de transparence à l’image Pas d’impact sur une image Assigner un identifiant à cette image Permet de modifier la manière dont l’image est dessinée Permet à l’utilisateur d’effectuer des interactions Permet de recevoir plusieurs évènement de multi touche
  • 40. 4. Interface utilisateur Valeur par défaut Paramètres de Text Field : Afficher une légende dans le champs Alignement Modifier l’apparence Type de valeurs possibles dans un Text Field Attributs hérités de UIControl (Peu sont utiles à ce contrôle)
  • 41.
  • 42.
  • 43.
  • 44. 4. Interface utilisateur Cacher le clavier lorsqu’on touche l’arrière plan .h .m
  • 45.
  • 46. 4. Interface utilisateur Valeurs minimum et maximum du slider Paramètres du Slider : Valeur initiale Propriétés habituelles Images du début et de la fin
  • 47.
  • 48. 4. Interface utilisateur Implémentation du Slider .h .m
  • 49.
  • 50. 4. Interface utilisateur Implémentation du Switch et du Segmented Control .h
  • 51. 4. Interface utilisateur Implémentation du Switches, des Buttons et du Segmented Control .m Permet de cacher les boutons ou les switches en fonction de la valeur du segmentedControl
  • 52.
  • 53. 4. Interface utilisateur Implémentation de l’ActionSheet .h .m Déclaration du protocole
  • 54. 4. Interface utilisateur .m Implémentation de l’AlertView Méthode déléguée Créer une alerte L’AlerteView possède aussi des méthodes déléguées (Il faut donc les déclarer en protocole dans le .h) mais ici, on ne s’en sert pas donc pas de déclaration
  • 55.
  • 56. 5. Rotation et dimensionnement
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62. 6. Applications à vues multiples
  • 63. 6. Applications à vues multiples Navigation Bar Tab Bar et Navigation Bar Classe : UINavigationController Classe : UITabBarController
  • 64.
  • 65.
  • 66.
  • 67.
  • 68. 6. Applications à vues multiples Exercice 4 : Modification de l’App Delegate View_SwitcherAppDelegate.m
  • 69.
  • 70.
  • 71. 6. Applications à vues multiples Exercice 4 : Implémentation de SwitchViewController.m Allocation de la vue bleue On l’insère dans le contrôleur On alloue la vue jaune Si le contrôleur jaune existe mais sa vue n’est pas au premier plan ou si le contrôleur n’a pas encore été instancié On retire la vue bleue et on la remplace par la vue jaune Si la vue jaune n’est pas allouée
  • 72. 6. Applications à vues multiples Exercice 4 : Implémentation de SwitchViewController.m On alloue la vue bleue Sinon le contrôle bleu existe mais sa vue n’est pas au premier plan ou si le contrôleur n’a pas été instancié On retire la vue jaune et on la remplace par la vue bleue Si la vue bleue n’est pas allouée Ne pas oublier de désallouer
  • 73.
  • 74. 6. Applications à vues multiples Exercice 4 : Appliquer une transition ... ... Timming de transition Durée Déclaration Type de transition A utiliser si on a surchargé ces méthodes dans les contrôleurs A utiliser si on surcharge ces méthodes dans les contrôleurs Permet d’enregistrer les animations et de lancer les transitions
  • 75. 7. Tab Bars et Pickers
  • 76.
  • 77. 7. Tab Bars et Pickers Exercice 5 : Ajout du Root View Controller .h .m
  • 78.
  • 79.
  • 80.
  • 81. 7. Tab Bars et Pickers Exercice 5 : Implémentation de Date Picker
  • 82.
  • 83. 7. Tab Bars et Pickers Exercice 5 : Single Compenent Picker Initialisation d’un array
  • 84. 7. Tab Bars et Pickers Exercice 5 : Single Compenent Picker Instructions pour le compilateur Fournir au Picker, la valeur à mettre dans un champ donné pour un composant donné
  • 85.
  • 86. 7. Tab Bars et Pickers Exercice 5 : Multicompenent Picker
  • 87. 7. Tab Bars et Pickers Exercice 5 : Multicompenent Picker
  • 88. 7. Tab Bars et Pickers NSDictionary et NSArray
  • 89.
  • 90. 7. Tab Bars et Pickers Exercice 5 : Depedent Components
  • 91. 7. Tab Bars et Pickers Exercice 5 : Depedent Components Permet de récupérer les ressources que l’on a importé dans le projet Permet de récupérer toutes les clés du dictionnaire Permet de trier par ordre alphabétique l’array
  • 92. 7. Tab Bars et Pickers Exercice 5 : Depedent Components
  • 94.
  • 95.
  • 96.
  • 97.
  • 98. 8. Table Views Exercice 6 : Une simple Table View Nombre de lignes par sections Pour afficher une ligne donnée indexPath contient la section et la ligne Pour créer une cellule en réutilisant l’id défini précédemment Identifiant unique d’une cellule Si la tableView ne possède pas de cellule partagée On retourne la cellule
  • 99. 8. Table Views Exercice 6 : Ajout d’une image dans chaque ligne propriété imageView
  • 100. 8. Table Views Style des lignes ■ Image: permet d’afficher une image à gauche de la ligne ■ Text Label: correspondant au texte principal de la ligne ■ Detail Text Label: permet d’ajouter une note, un label à ligne en dessous du texte principal Indentation des lignes
  • 101. 8. Table Views Sélection d’une ligne ■ Avant de sélectionner une ligne ■ Après sélection d’une ligne
  • 102. 8. Table Views Taille d’une ligne Taille du texte
  • 103.
  • 104. 8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Déclaration de nos sources de données
  • 105. 8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Création manuelle de la cellule : ajout du label «Name»
  • 106. 8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Création manuelle de la cellule : ajout du label «Color» Création manuelle de la cellule : ajout du label «nameValue» Création manuelle de la cellule : ajout du label «colorValue»
  • 107. 8. Table Views Exercice 7 : Créer ses propres cellules, exemple 1 Ajout les valeurs aux deux champs
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113. 8. Table Views Points importants Ajouter un index Implémentation d’un barre de recherche Principe Créer un dictionnaire immutable qui contient tout les données ainsi qu’un dictionnaire mutable qui contiendra tous les résultats lors d’une recherche Problème : mutableCopy ne copie pas en profondeur les array et copie uniquement les références Solution : Créer soit meme une fonction qui copie en profondeur
  • 114. 8. Table Views Implémentation d’un barre de recherche Deep Mutable Copy .h .m Parcours du dictionnaire original On essaye de copier l’objet via mutable deep copy Si l’objet ne répond pas au message, on tente une mutable copy Si l’objet ne répond pas au message, on tente une simple copie
  • 116. 9. Navigation Controllers Etude de l’exemple « 09 Nav» Mise en place de Navigation Controller
  • 117. 10. Paramètres de l’application
  • 118.
  • 119.
  • 120. 10. Paramètres d’une application Analyse du fichier Root.plist
  • 121. 10. Paramètres d’une application Analyse du fichier Root.plist
  • 122. 10. Paramètres d’une application Lecture des paramètres dans l’application Classe NSUserDefaults
  • 123. 10. Paramètres d’une application Ecriture des paramètres dans l’application
  • 124. 11. Persistance des données
  • 125.
  • 126.
  • 127. 11. Persistance des données Méthode 1 : Property List Lecture des données Ecriture des données
  • 128.
  • 129.
  • 130. 11. Persistance des données Méthode 2 : Archiver les objets Persistance du «Data Object» Archiver les objets dans un NSMutableData Contiendra l’objet encodé Création d’une clé pour encoder n’importe quel objet dans l’archive Désallocation On prévient l’archive que l’on a fini d’encoder nos objets On enregistre l’archive
  • 131. 11. Persistance des données Méthode 2 : Archiver les objets Persistance du «Data Object» Décoder l’archive Contiendra l’objet décodé Lecture des objets désarchivés avec la clé définie précédemment Désallocation Explorer l’exemple «11 Persistence Archiving»
  • 132. 11. Persistance des données Méthode 3 : SQLite 3 Ouverture de la base de données Importer le frameworks «libsqlite3.dylib» Fermer la base de données Créer une table
  • 133. 11. Persistance des données Méthode 3 : SQLite 3 Effectuer des requêtes
  • 134. 11. Persistance des données Méthode 3 : SQLite 3 Bind Variables pour insérer des champs Explorer l’exemple «11 Persistence SQLite»
  • 135. 11. Persistance des données Méthode 4 : Core Data Classes permettant de gérer facilement la persistance des données Principe de Core Data basé sur la description des données Pour se faire : création d’entités et d’attributs (un peu comme en UML) 1. Déclaration de l’entité 2. Déclaration d’un attributs 3. Modification des propriétés de l’attribut
  • 136. 11. Persistance des données Méthode 4 : Core Data Etablir des relations entre les entités Explorer l’exemple «11 Core Data Persistence»
  • 137. 12. Dessiner avec Quartz
  • 138.
  • 139. 12. Dessiner avec Quartz Explorer le projet «QuartzDemo»

Notes de l'éditeur

  1. Other Sources : source code qui n’est pas de l’Objective C (.pch : en-tête précompilée) Ressources : toutes les fichiers qui seront utilisables par l’application