formation iphone ensi by (orange tunisie)
TRANSCRIPT
![Page 1: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/1.jpg)
SDK iPhoneSDK iPhoneProgramme de formation
![Page 2: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/2.jpg)
PrésentationLancé en mars 2008
Compatible avec Mac OS X
Langage : Cocoa
Environnement de développement : Xcode et Interface Builder
Développement pour iPhone et iPod Touch
100 000 applications disponibles
3 milliards de téléchargements (21 milliards en 2013)
75% des applications sont gratuites
![Page 3: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/3.jpg)
Plan de formation1. Introduction
2. Création d’un projet
3. Programmation
4. Interface utilisateur
5. Rotation et dimensionnement
6. Applications à vues multiples
7. Tab Bars et Pickers
8. Table Views
![Page 4: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/4.jpg)
Plan de formation9. Navigation Controllers
10.Paramètres de l’application
11. Persistance des données
12. Dessiner avec Quartz
13. Interaction de l’utilisateur
14. Utilisation de la caméra et de l’album photo
15. Publication sur l’AppStore
![Page 5: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/5.jpg)
1. Introduction1. Introduction
![Page 6: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/6.jpg)
1. Introduction
Ouvrir un compte Apple
http://developer.apple.com/iphone/
SDK version 3.1.2
Téléchargement du SDK
![Page 7: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/7.jpg)
1. Introduction
Uniquement une application en exécution
Uniquement une fenêtre à la fois
Accès limité au workspace de l’application
Temps de réponse limité
Ecran limité
Ressources systèmes limitées
Pas de souris ni de clavier physique
Caractéristiques d’une application
![Page 8: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/8.jpg)
1. Introduction
Programmation Cocoa
Objets Objective-C
NSStringNSNumberNSArrayNSMutableArrayNSDictionaryNSMutableDictionaryNSDateintBOOL
Envoyer des messages aux objets
Autres langages : alert.show();En Objective-C : [alert show];
![Page 9: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/9.jpg)
1. Introduction
Programmation Cocoa
Envoyer des messages aux objets avec des paramètres
Autres langages : alert.show("A Funny Message", 3);
En Objective-C : [alert show:@"I say this!" thisManyTimes:3];
Instancier des objets
myClass *myObject = [[myClass alloc] init];
Libération des objets
[myObject release];
![Page 10: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/10.jpg)
1. Introduction
Programmation Cocoa
Pattern de l’utilisation des objets
Management de la mémoireManagement 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];
![Page 11: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/11.jpg)
1. Introduction
Programmation Cocoa
Classe NSString
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);
![Page 12: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/12.jpg)
1. Introduction
Programmation CocoaClasse NSNumber
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);
![Page 13: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/13.jpg)
1. Introduction
Programmation CocoaClasse NSArray
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];
![Page 14: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/14.jpg)
2. Création d’un projet
2. Création d’un projet
![Page 15: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/15.jpg)
2. Création d’un projet
![Page 16: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/16.jpg)
2. Création d’un projetXcode
![Page 17: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/17.jpg)
2. Création d’un projet
Application Delegate
Il s’agit de la classe en charge du lancement de l’application et de l’affichage de la fenêtre principale.Vous pouvez vous en servir pour initialiser des éléments particuliers communs à l’ensemble des éléments de votre application :■connexion à une base de données,■configuration générale,
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.
![Page 18: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/18.jpg)
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.
ProductsContient le fichier généré par la compilation, à savoir l’application
![Page 19: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/19.jpg)
2. Création d’un projet
File’s Owner : instance de l’objet qui a chargé le fichier nib (NeXT Interface Builder) du disque
First Responder : objet avec lequel l’utilisateur intéragit
Autres objets : Instances d’objets qui seront créés lorsque le fichier nib se chargera
Interface Builder
![Page 20: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/20.jpg)
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
![Page 21: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/21.jpg)
2. Création d’un projet
Image .png obligatoire et de taille de 57 x 57 pixels
Importer l’image dans le projet
Spécifier dans les paramètres de l’application («mon_prj-Info.plist») une icône
Ajout d’une icône à l’application
![Page 22: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/22.jpg)
2. Création d’un projet
Exercice 1 :
•Créer un projet Hello World
•Placer un label «Hello World» sur la vue
•Changer ses attributs (Taille, couleur ...)
•Ajouter une icône à l’application
•Compiler
![Page 23: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/23.jpg)
3. Programmation3. Programmation
![Page 24: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/24.jpg)
3. Programmation
Architecture et méthode de conception qui organise l’interface homme-machine (IHM)
Division de l’IHM en :
Un modèle (Modèle de données)
Une vue (Présentation, interface)
Un contrôleur (Logique de contrôle, gestion des évènements, synchronisation)
Concept du «Modèle-Vue-Contrôleur»
Lorsqu'un client envoie une requête à l'application :
la requête est analysée par le contrôleur
le contrôleur demande au modèle approprié d’effectuer les traitements
le contrôleur renvoie la vue adaptée
![Page 25: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/25.jpg)
3. Programmation
Exercice 2 :
•Créer un projet Button Fun
•Ajouter deux boutons et un label
![Page 26: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/26.jpg)
3. Programmation
Classe Controller.h
Sous classe de UIViewController
![Page 27: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/27.jpg)
3. ProgrammationLes pointeurs
Déclaration :
Les fonctionsDé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
![Page 28: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/28.jpg)
3. ProgrammationLes types de données :
NSStringNSNumberNSArrayNSMutableArrayNSDictionaryNSMutableDictionaryNSDateintBOOL
Exemple :
.h :NSNumber *my_number;
@property (nonatomic, retain) NSNumber * my_number;
.m :@synthesize my_number;
![Page 29: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/29.jpg)
3. Programmation
Classe Controller.m
![Page 30: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/30.jpg)
3. ProgrammationClasse Controller.m
![Page 31: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/31.jpg)
3. Programmation
Exercice 2 (suite) :
Déclarer un pointeur «statusText» sur le label
Déclarer une fonction «buttonPressed»
![Page 32: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/32.jpg)
3. Programmation
Exercice 2 : Correction
.h
.m
Création des accesseurs et mutateurs
Implémentation de la fonction
![Page 33: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/33.jpg)
3. Programmation
Exercice 2 : Correction
.m
Concernant l’allocation ...
...ou
![Page 34: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/34.jpg)
3. Programmation
Connecter des pointeurs
1. Relier le File’s Owner au Label pour créer la
connexion
2. Choisir le pointeur
![Page 35: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/35.jpg)
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
![Page 36: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/36.jpg)
3. Programmation
Exercice 2 (suite) :
Relier les pointeurs avec les objets présents dans Interface Builder
Tester l’application
![Page 37: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/37.jpg)
4. Interface utilisateur
4. Interface utilisateur
![Page 38: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/38.jpg)
4. Interface utilisateur
Liste des contrôles disponibles dans IB :
Image View
Text Field
Slider
Segmented Control
Button
Label
Switch
Les contrôles peuvent être du type :
• Actif (Button ...)
• Statique (Label ...)
• Passif (Text Field ...)
![Page 39: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/39.jpg)
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 situeAppliquer un effet de transparence à l’image
Pas d’impact sur une imageAssigner un identifiant à cette imagePermet de modifier la manière dont l’image est dessinéePermet à l’utilisateur d’effectuer des interactionsPermet de recevoir plusieurs évènement de multi touche
![Page 40: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/40.jpg)
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)
![Page 41: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/41.jpg)
4. Interface utilisateur
Exercice 3 :
Créer un projet «Control Fun»
Créer l’interface comme celle présentée à droite
Déterminer le nombre de pointeurs nécessaires
Déterminer le nombre d’actions nécessaires
Implémenter l’ImageView et les deux TextFields
![Page 42: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/42.jpg)
4. Interface utilisateur
Exercice 3 :Image View : image statique (pas besoin de pointeurs)
Labels : pas besoin de pointeurs
TextFields : pointeurs à déclarer
(nameField et numberField)
•Slider : un pointeur pour le label et une action pour le slider
(sliderLabel et fonction sliderChanged)
Segmented Control : pas besoin de pointeurs, une action
(fonction toggleControls)
•Button : pointeur et action
(doSomethingButton et fonction buttonChanged)
•Switches : un pointeur pour chaque et une action
(leftSwitch et rightSwitch)
![Page 43: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/43.jpg)
4. Interface utilisateur
Cacher le clavier lorsque la touche Done est enfoncée
Evénement lié : Did End On Exit
.h
.m
FirstResponder : c’est le contrôle pour lequel l’utilisateur est en train de interagir avec
![Page 44: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/44.jpg)
4. Interface utilisateurCacher le clavier lorsqu’on touche l’arrière
plan.h
.m
![Page 45: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/45.jpg)
4. Interface utilisateurCacher 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
Evénement lié : Touch Down
![Page 46: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/46.jpg)
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
![Page 47: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/47.jpg)
4. Interface utilisateur
Exercice 3 (suite) :
Implémenter le Slider
![Page 48: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/48.jpg)
4. Interface utilisateur
Implémentation du Slider
.h
.m
![Page 49: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/49.jpg)
4. Interface utilisateur
Exercice 3 (suite) :
Implémenter le SegmentedControl ainsi que les Switches
![Page 50: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/50.jpg)
4. Interface utilisateurImplémentation du Switch et du Segmented
Control
.h
![Page 51: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/51.jpg)
4. Interface utilisateurImplémentation du Switches, des Buttons et
du Segmented Control
.m
Permet de cacher les boutons ou les switches en fonction de la
valeur du segmentedContro
l
![Page 52: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/52.jpg)
4. Interface utilisateur
Exercice 3 (suite) :
•Implémenter le Button «Do Something»
UIActionSheet UIAlertView
![Page 53: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/53.jpg)
4. Interface utilisateur
Implémentation de l’ActionSheet
.h
.m
Déclaration du protocole
![Page 54: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/54.jpg)
4. Interface utilisateur
.mImplé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
![Page 55: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/55.jpg)
4. Interface utilisateur
viewDidLoad et viewDidUnload
viewDidLoad : Permet d’initialiser la vue, les variables, fonctions ... lorsqu’elle se charge
viewDidUnload : permet d’éviter de surcharger la mémoire. Lorsque vous spécifiez des pointeurs dans le contrôleur, ces derniers sont retenus (Retain) et lorsque la vue est libérée, il faut donc libérer ces pointeurs dans viewDidUnload. Lorsque le fichier nib sera rechargé, Cocoa connectera automatiquement les pointeurs.
![Page 56: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/56.jpg)
5. Rotation et dimensionnement
5. Rotation et dimensionnement
![Page 57: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/57.jpg)
5. Rotation et dimensionnement
Taille de l’écran :
320 pixels x 460 pixels (ou 480 s’il n’y a pas de barre de statut)
Trois approches pour la rotation :
Dimensionnement automatique : rapide et simple mais pas approprié pour des applications complexes
Positionnement manuel lors de la rotation
Créer deux versions de la vue (Portrait et paysage)
![Page 58: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/58.jpg)
5. Rotation et dimensionnement
Autosizing :
Pour autoriser n’importe quel sens d’orientation :
![Page 59: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/59.jpg)
5. Rotation et dimensionnementRedimensionneme
nt :
Examiner l’ exemple fournit en annexe :
«05 Autosize 1»
![Page 60: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/60.jpg)
5. Rotation et dimensionnementRedimensionnement manuel :
Examiner l’exemple fournit en annexe : «05 Autosize 2»
![Page 61: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/61.jpg)
5. Rotation et dimensionnement
Création de deux vues :
Examiner l’exemple fournit en annexe : «05 Swap»
![Page 62: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/62.jpg)
6. Applications à vues multiples
6. Applications à vues multiples
![Page 63: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/63.jpg)
6. Applications à vues multiples
Navigation Bar Tab Bar et Navigation BarClasse :
UINavigationControllerClasse : UITabBarController
![Page 64: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/64.jpg)
6. Applications à vues multiples
Exercice 4 : Création du projetCréer un projet «View Switcher»
Choisir «Window-based Application» (Contient uniquement une Window et une application delegate)
On créé un «Root Controller» qui va coordonner l’affichage des deux vues
![Page 65: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/65.jpg)
6. Applications à vues multiples
Exercice 4 : Création des contrôleurs
Ajouter au projet le template «UIViewController subclass»
Nommez le «SwitchViewController.m»
Faire de même en créant : «BlueViewController.m» et «YellowViewController.m»
![Page 66: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/66.jpg)
6. Applications à vues multiples
Exercice 4 : Création des vuesAjouter au projet deux templates «View XIB»
Ils correspondent à deux fichiers «nib» qui représentent nos deux vues
Nommez les «BlueView.xib» et «YellowView.xib»
![Page 67: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/67.jpg)
6. Applications à vues multiples
Exercice 4 : Modification de l’App Delegate
View_SwitcherAppDelegate.h
Déclaration d’un pointeur sur notre «root controller» car il sera intégré à l’application lorsqu’elle sera lancée
![Page 68: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/68.jpg)
6. Applications à vues multiples
Exercice 4 : Modification de l’App Delegate
View_SwitcherAppDelegate.m
![Page 69: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/69.jpg)
6. Applications à vues multiples
Exercice 4 : SwitchViewController.h
Déclaration des pointeurs et des actions dont nous aurons besoin
Pointeurs sur les deux classes sur lesquelles on va switcher
Action pour switcher les vues (Appelée lorsque le bouton sera enfoncé)
![Page 70: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/70.jpg)
6. Applications à vues multiples
Exercice 4 : Modification de MainWindow.xibAjout d’une instance de SwitchViewController dans le MainWindow.xib
Changer la classe de l’objet en
SwitchViewController
Construire l’interface (Toolbar) et connecter le bouton à l’action «switchViews»
![Page 71: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/71.jpg)
6. Applications à vues multiplesExercice 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
![Page 72: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/72.jpg)
6. Applications à vues multiplesExercice 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
![Page 73: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/73.jpg)
6. Applications à vues multiples
Exercice 4 : Implémentation des alertes
Implémenter les alertes (UIAlertView) dans chacune des deux vues
![Page 74: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/74.jpg)
6. Applications à vues multiples
Exercice 4 : Appliquer une transition
...
...
Timming de transitionDuréeDé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
![Page 75: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/75.jpg)
7. Tab Bars et Pickers7. Tab Bars et Pickers
![Page 76: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/76.jpg)
7. Tab Bars et Pickers
Exercice 5 : Création du projetCréer un projet «Pickers»
Choisir «Window-based Application» (Contient uniquement une Window et une application delegate)
On créé 4 «Root Controller» : DatePickerViewController.h, SingleComponentPickerViewController.m, DoubleComponentPickerViewController.m, DependentComponentPickerViewController.m
![Page 77: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/77.jpg)
7. Tab Bars et Pickers
Exercice 5 : Ajout du Root View Controller
.h
.m
![Page 78: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/78.jpg)
7. Tab Bars et PickersExercice 5 : Ajout du Root View Controller
Icônes de la Tab Bar : 24 x 24 pixels, fond transparent, format .png
Ouvrir «MainWindow.xib», ajouter une «Tab Bar Controller»
Ajouter 4 items qui correspondent à nos 4 vues
Associer chaque Table View Controller avec le fichier nib correspondant
![Page 79: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/79.jpg)
7. Tab Bars et PickersExercice 5 : Ajout du Root View Controller
Changer la classe en «DatePickerViewController» dans «Identity Inspector»
Répéter la procédure pour les 4 autres items
Control Drag de «Pickers App Delegate» au «Tab Bar Controller» et connecter le pointeur «rootController»
Icône rouge pour afficher des infosAppliquer un style prédéfini à l’item
Customiser l’apparence de l’item
![Page 80: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/80.jpg)
7. Tab Bars et PickersExercice 5 : Implémentation de Date Picker
Ajouter un pointeur (Pour récupérer la date sélectionnée) : datePicker
Ajouter une action (Pour afficher une «AlertView» avec la date sélectionnée)
buttonPressed
Ouvrir DatePickerViewController.xib
Redimensionner la fenêtre en spécifiant dans «BottomBar», Tab Bar
Ajouter à partir de la librairie un DatePicker et un bouton
![Page 81: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/81.jpg)
7. Tab Bars et PickersExercice 5 : Implémentation de Date Picker
![Page 82: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/82.jpg)
7. Tab Bars et PickersExercice 5 : Single Compenent Picker
Ajouter un pointeur (Pour récupérer le choix sélectionnée) : singlePicker
Ajouter une action (Pour afficher une «AlertView») buttonPressed
Inclure les protocoles UIPickerViewDelegate et UIPickerViewDataSource
.h
Ouvrir SingleCompenentPickerViewController.xib
Redimensionner la fenêtre en spécifiant dans «BottomBar», Tab Bar
Ajouter à partir de la librairie un PickerView et un bouton et les relier aux pointeurs et actions correspondants (ne pas oublier de relier Delegate et DataSource)
![Page 83: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/83.jpg)
7. Tab Bars et Pickers
Exercice 5 : Single Compenent Picker
Initialisation d’un array
![Page 84: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/84.jpg)
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é
![Page 85: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/85.jpg)
7. Tab Bars et PickersExercice 5 : Multicompenent Picker
Ajouter un pointeur (Pour récupérer le choix sélectionnée) : doublePicker
Ajouter une action (Pour afficher une «AlertView») buttonPressed
Ajouter deux Array et inclure les protocoles UIPickerViewDelegate et UIPickerViewDataSource
.h
Ouvrir SingleCompenentPickerViewController.xib et créer l’interface
![Page 86: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/86.jpg)
7. Tab Bars et Pickers
Exercice 5 : Multicompenent Picker
![Page 87: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/87.jpg)
7. Tab Bars et PickersExercice 5 : Multicompenent Picker
![Page 88: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/88.jpg)
7. Tab Bars et Pickers
NSDictionary et NSArray
![Page 89: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/89.jpg)
7. Tab Bars et PickersExercice 5 : Depedent Components
Ajouter un pointeur (Pour récupérer le choix sélectionnée) : picker
Ajouter une action (Pour afficher une «AlertView») buttonPressed
Ajouter deux Array, un Dictionary et inclure les protocoles UIPickerViewDelegate et UIPickerViewDataSource
.h
Ouvrir DependentCompenentPickerViewController.xib et créer l’interface
![Page 90: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/90.jpg)
7. Tab Bars et Pickers
Exercice 5 : Depedent Components
![Page 91: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/91.jpg)
7. Tab Bars et PickersExercice 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
dictionnairePermet de trier par ordre alphabétique
l’array
![Page 92: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/92.jpg)
7. Tab Bars et PickersExercice 5 : Depedent Components
![Page 93: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/93.jpg)
8. Table Views8. Table Views
![Page 94: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/94.jpg)
8. Table Views
Principe des vues sous forme de listes
Une seule colonne par vue, lignes facilement modifiables
Chaque ligne peut contenir des sous-vuesStockage uniquement des lignes visibles à l’écranUITableViewDataSource et UITableViewDelegate
![Page 95: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/95.jpg)
8. Table Views
Styles des Table Views
Grouped table Plain table sans indexPlain table avec index
![Page 96: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/96.jpg)
8. Table Views
Les sections dans une Table Views
![Page 97: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/97.jpg)
8. Table Views
Exercice 6 : Une simple Table ViewCréer un projet «Simple Table»
Placer une Table View sur la vue
Connecter les DataSource et Delegate avec File’s Owner
Implémenter le Simple_TableViewController (Ajouter les protocoles ainsi que un array qui contiendra les données)
![Page 98: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/98.jpg)
8. Table Views
Exercice 6 : Une simple Table View
Nombre de lignes par sections
Pour afficher une ligne donnéeindexPath 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
![Page 99: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/99.jpg)
8. Table ViewsExercice 6 : Ajout d’une image dans chaque ligne
propriété imageView
![Page 100: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/100.jpg)
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
![Page 101: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/101.jpg)
8. Table Views
Sélection d’une ligne■ Avant de sélectionner une ligne
■ Après sélection d’une ligne
![Page 102: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/102.jpg)
8. Table Views
Taille d’une ligne
Taille du texte
![Page 103: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/103.jpg)
8. Table ViewsExercice 7 : Créer ses propres cellules, exemple 1
Créer un projet «Cell»
Placer une Table View sur la vue
Connecter les DataSource et Delegate avec File’s Owner
![Page 104: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/104.jpg)
8. Table ViewsExercice 7 : Créer ses propres cellules, exemple 1
Déclaration de nos sources de données
![Page 105: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/105.jpg)
8. Table ViewsExercice 7 : Créer ses propres cellules, exemple 1
Création manuelle de la cellule : ajout du label
«Name»
![Page 106: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/106.jpg)
8. Table ViewsExercice 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»
![Page 107: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/107.jpg)
8. Table ViewsExercice 7 : Créer ses propres cellules, exemple 1
Ajout les valeurs aux deux champs
![Page 108: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/108.jpg)
8. Table ViewsExercice 8 : Création de CustomCell.h, exemple 2
Ajouter au projet, un UITableViewCell
Ouvrir CustomCell.xib
Ajouter une «Table View Cell» à partir de la librairie
Changer la classe de UITableViewCell en CustomCell
Changer la taille de la cellule en 65 pixels
![Page 109: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/109.jpg)
8. Table ViewsExercice 8 : Création de CustomCell.h, exemple 2
Double clic sur l’icône CustomCell
Déposer l’objet «View» sur cette vue
Changer la taille de la vue :
x = 0, y = 0, w = 320 et h = 65
Déposer 4 labels sur la vue et relier les pointeurs sur ces labels
![Page 110: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/110.jpg)
8. Table ViewsExercice 8 : Création de CustomCell.h, exemple 2
Effectuer les changements suivants
Création de la cellule à partir du
nib
Obtenir tous les objets du nib
![Page 111: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/111.jpg)
8. Table ViewsExercice 8 : Création de CustomCell.h, exemple 2
Effectuer les changements suivants
Pour spécifier que l’on a changé la taille de la cellule
.h
![Page 112: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/112.jpg)
8. Table Views
Exercice 9 : Etudier l’exemple de projet intitulé « 08 Section 1» et « 08 Section 2 »
![Page 113: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/113.jpg)
8. Table Views
Points importants
Ajouter un index
Implémentation d’un barre de recherche
PrincipeCré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
![Page 114: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/114.jpg)
8. Table ViewsImplémentation d’un barre de
rechercheDeep Mutable Copy .h.m
Parcours du dictionnaire original
On essaye de copier l’objet viamutable deep copy
Si l’objet ne répond pas au message, on tente une mutable
copySi l’objet ne répond pas au
message, on tente une simple copie
![Page 115: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/115.jpg)
9. Navigation Controllers
9. Navigation Controllers
![Page 116: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/116.jpg)
9. Navigation ControllersEtude de l’exemple « 09 Nav»
Mise en place de Navigation Controller
![Page 117: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/117.jpg)
10. Paramètres de l’application
10. Paramètres de l’application
![Page 118: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/118.jpg)
10. Paramètres d’une application
Exercice 10 : Utility ApplicationCréer un projet «AppSettings»
![Page 119: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/119.jpg)
10. Paramètres d’une application
Exercice 10 : Settings BundleProperty list nommée ‘Root.plist» permet de spécifier les paramètres de
l’application.
Ce fichier suit une structure très précise
Ajouter un «Settings Bundle» au projet : «Settings»
Analyse du fichier Root.plist
![Page 120: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/120.jpg)
10. Paramètres d’une application
Analyse du fichier Root.plist
![Page 121: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/121.jpg)
10. Paramètres d’une application
Analyse du fichier Root.plist
![Page 122: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/122.jpg)
10. Paramètres d’une application
Lecture des paramètres dans l’application
Classe NSUserDefaults
![Page 123: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/123.jpg)
10. Paramètres d’une application
Ecriture des paramètres dans l’application
![Page 124: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/124.jpg)
11. Persistance des données
11. Persistance des données
![Page 125: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/125.jpg)
11. Persistance des données3 possibilités pour sauvegarder des données
Proporty List
Archive Object
SQLite 3
Core Data
Créer un chemin d’un fichier
Récupérer le dossier de stockage des documents sur l’iPhone
Accès au dossier tmp
![Page 126: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/126.jpg)
11. Persistance des données
Méthode 1 : Property ListListe des objets pouvant être sauvegardé dans un fichier «plist»
Méthode
Inconvénient : Les autres objets ne peuvent pas être sauvegardés
![Page 127: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/127.jpg)
11. Persistance des données
Méthode 1 : Property List
Lecture des données
Ecriture des données
![Page 128: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/128.jpg)
11. Persistance des donnéesMéthode 2 : Archiver les objets
Protocole NSCoding possède deux méthodes obligatoires pour archiver
Avant de pouvoir sauvegarder une archive, il faut que la classe soit conforme à NSCoding et NSCopying
Encoder
Décoder Si on surclasse une classe qui ne conforme pas à NSCoding
![Page 129: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/129.jpg)
11. Persistance des données
Méthode 2 : Archiver les objetsProtocole NSCoding possède deux méthodes obligatoires pour archiver
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)
![Page 130: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/130.jpg)
11. Persistance des données
Méthode 2 : Archiver les objetsPersistance 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
![Page 131: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/131.jpg)
11. Persistance des données
Méthode 2 : Archiver les objetsPersistance 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»
![Page 132: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/132.jpg)
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
![Page 133: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/133.jpg)
11. Persistance des données
Méthode 3 : SQLite 3Effectuer des requêtes
![Page 134: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/134.jpg)
11. Persistance des données
Méthode 3 : SQLite 3Bind Variables pour insérer des champs
Explorer l’exemple «11 Persistence SQLite»
![Page 135: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/135.jpg)
11. Persistance des données
Méthode 4 : Core DataClasses permettant de gérer facilement la persistance des donnéesPrincipe de Core Data basé sur la description des donnéesPour 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
![Page 136: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/136.jpg)
11. Persistance des données
Méthode 4 : Core Data
Etablir des relations entre les entités
Explorer l’exemple «11 Core Data Persistence»
![Page 137: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/137.jpg)
12. Dessiner avec Quartz
12. Dessiner avec Quartz
![Page 138: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/138.jpg)
12. Dessiner avec Quartz
QuartzClasse UIView, fonction drawRect
Le dessin s’effectue avec un context. Chaque vue à un contexte associé
Fonctions de dessin
CouleursStrokeColor : pour la couleur d’une ligne et le contour d’une forme
FillColor : pour la couleur interne d’une forme
![Page 139: Formation iPhone ENSI by (Orange Tunisie)](https://reader037.vdocuments.pub/reader037/viewer/2022102805/55668a27d8b42a0f168b52d8/html5/thumbnails/139.jpg)
12. Dessiner avec Quartz
Explorer le projet «QuartzDemo»