Formation iPhone ENSI by (Orange Tunisie)

139
SDK iPhone Programme de formation

Transcript of Formation iPhone ENSI by (Orange Tunisie)

Page 1: Formation iPhone ENSI by (Orange Tunisie)

SDK iPhoneSDK iPhoneProgramme de formation

Page 2: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

1. Introduction1. Introduction

Page 6: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

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)

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)

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)

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)

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)

2. Création d’un projet

2. Création d’un projet

Page 15: Formation iPhone ENSI by (Orange Tunisie)

2. Création d’un projet

Page 16: Formation iPhone ENSI by (Orange Tunisie)

2. Création d’un projetXcode

Page 17: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

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)

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)

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)

3. Programmation3. Programmation

Page 24: Formation iPhone ENSI by (Orange Tunisie)

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)

3. Programmation

Exercice 2 :

•Créer un projet Button Fun

•Ajouter deux boutons et un label

Page 26: Formation iPhone ENSI by (Orange Tunisie)

3. Programmation

Classe Controller.h

Sous classe de UIViewController

Page 27: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

3. Programmation

Classe Controller.m

Page 30: Formation iPhone ENSI by (Orange Tunisie)

3. ProgrammationClasse Controller.m

Page 31: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

3. Programmation

Exercice 2 : Correction

.m

Concernant l’allocation ...

...ou

Page 34: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

4. Interface utilisateur

4. Interface utilisateur

Page 38: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

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)

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)

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)

4. Interface utilisateurCacher le clavier lorsqu’on touche l’arrière

plan.h

.m

Page 45: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

4. Interface utilisateur

Exercice 3 (suite) :

Implémenter le Slider

Page 48: Formation iPhone ENSI by (Orange Tunisie)

4. Interface utilisateur

Implémentation du Slider

.h

.m

Page 49: Formation iPhone ENSI by (Orange Tunisie)

4. Interface utilisateur

Exercice 3 (suite) :

Implémenter le SegmentedControl ainsi que les Switches

Page 50: Formation iPhone ENSI by (Orange Tunisie)

4. Interface utilisateurImplémentation du Switch et du Segmented

Control

.h

Page 51: Formation iPhone ENSI by (Orange Tunisie)

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)

4. Interface utilisateur

Exercice 3 (suite) :

•Implémenter le Button «Do Something»

UIActionSheet UIAlertView

Page 53: Formation iPhone ENSI by (Orange Tunisie)

4. Interface utilisateur

Implémentation de l’ActionSheet

.h

.m

Déclaration du protocole

Page 54: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

5. Rotation et dimensionnement

5. Rotation et dimensionnement

Page 57: Formation iPhone ENSI by (Orange Tunisie)

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)

5. Rotation et dimensionnement

Autosizing :

Pour autoriser n’importe quel sens d’orientation :

Page 59: Formation iPhone ENSI by (Orange Tunisie)

5. Rotation et dimensionnementRedimensionneme

nt :

Examiner l’ exemple fournit en annexe :

«05 Autosize 1»

Page 60: Formation iPhone ENSI by (Orange Tunisie)

5. Rotation et dimensionnementRedimensionnement manuel :

Examiner l’exemple fournit en annexe : «05 Autosize 2»

Page 61: Formation iPhone ENSI by (Orange Tunisie)

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)

6. Applications à vues multiples

6. Applications à vues multiples

Page 63: Formation iPhone ENSI by (Orange Tunisie)

6. Applications à vues multiples

Navigation Bar Tab Bar et Navigation BarClasse :

UINavigationControllerClasse : UITabBarController

Page 64: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

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)

6. Applications à vues multiples

Exercice 4 : Modification de l’App Delegate

View_SwitcherAppDelegate.m

Page 69: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

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)

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)

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)

7. Tab Bars et Pickers7. Tab Bars et Pickers

Page 76: Formation iPhone ENSI by (Orange Tunisie)

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)

7. Tab Bars et Pickers

Exercice 5 : Ajout du Root View Controller

.h

.m

Page 78: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

7. Tab Bars et PickersExercice 5 : Implémentation de Date Picker

Page 82: Formation iPhone ENSI by (Orange Tunisie)

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)

7. Tab Bars et Pickers

Exercice 5 : Single Compenent Picker

Initialisation d’un array

Page 84: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

7. Tab Bars et Pickers

Exercice 5 : Multicompenent Picker

Page 87: Formation iPhone ENSI by (Orange Tunisie)

7. Tab Bars et PickersExercice 5 : Multicompenent Picker

Page 88: Formation iPhone ENSI by (Orange Tunisie)

7. Tab Bars et Pickers

NSDictionary et NSArray

Page 89: Formation iPhone ENSI by (Orange Tunisie)

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)

7. Tab Bars et Pickers

Exercice 5 : Depedent Components

Page 91: Formation iPhone ENSI by (Orange Tunisie)

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)

7. Tab Bars et PickersExercice 5 : Depedent Components

Page 93: Formation iPhone ENSI by (Orange Tunisie)

8. Table Views8. Table Views

Page 94: Formation iPhone ENSI by (Orange Tunisie)

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)

8. Table Views

Styles des Table Views

Grouped table Plain table sans indexPlain table avec index

Page 96: Formation iPhone ENSI by (Orange Tunisie)

8. Table Views

Les sections dans une Table Views

Page 97: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

8. Table ViewsExercice 6 : Ajout d’une image dans chaque ligne

propriété imageView

Page 100: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

8. Table Views

Taille d’une ligne

Taille du texte

Page 103: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

9. Navigation Controllers

9. Navigation Controllers

Page 116: Formation iPhone ENSI by (Orange Tunisie)

9. Navigation ControllersEtude de l’exemple « 09 Nav»

Mise en place de Navigation Controller

Page 117: Formation iPhone ENSI by (Orange Tunisie)

10. Paramètres de l’application

10. Paramètres de l’application

Page 118: Formation iPhone ENSI by (Orange Tunisie)

10. Paramètres d’une application

Exercice 10 : Utility ApplicationCréer un projet «AppSettings»

Page 119: Formation iPhone ENSI by (Orange Tunisie)

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)

10. Paramètres d’une application

Analyse du fichier Root.plist

Page 121: Formation iPhone ENSI by (Orange Tunisie)

10. Paramètres d’une application

Analyse du fichier Root.plist

Page 122: Formation iPhone ENSI by (Orange Tunisie)

10. Paramètres d’une application

Lecture des paramètres dans l’application

Classe NSUserDefaults

Page 123: Formation iPhone ENSI by (Orange Tunisie)

10. Paramètres d’une application

Ecriture des paramètres dans l’application

Page 124: Formation iPhone ENSI by (Orange Tunisie)

11. Persistance des données

11. Persistance des données

Page 125: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

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)

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)

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)

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)

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)

11. Persistance des données

Méthode 3 : SQLite 3Effectuer des requêtes

Page 134: Formation iPhone ENSI by (Orange Tunisie)

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)

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)

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)

12. Dessiner avec Quartz

12. Dessiner avec Quartz

Page 138: Formation iPhone ENSI by (Orange Tunisie)

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)

12. Dessiner avec Quartz

Explorer le projet «QuartzDemo»