Tutoriel : Créer une application simple pour iPhone sur iOS 5. Partie 1/3

Ray Wenderlich

Cet article est également disponible en : Chinois simplifié, Anglais, Japonais, Espagnol, Coréen

La programmation pour iPhone, c’est comme une coccinnelle : amusant mais un petit peu effrayant !

La programmation pour iPhone, c’est comme une coccinnelle : amusant mais un petit peu effrayant !

Mise à jour du 16/02/12 : Adaptation à iOS 5.

L’iPhone est une plateforme formidable pour laquelle programmer lorsqu’on est un développeur indépendant. Il n’a jamais été aussi facile de partir d’une idée originale, de la programmer et de la rendre disponible à des millions de clients potentiels !

Dernièrement, j’ai reçu de nombreuses questions de la part de débutants en programmation pour iOS, me demandant comment faire pour bien démarrer. C’est pourquoi j’ai pensé qu’écrire cette série de didacticiels, dédiée aux débutants, serait utile.

Plutôt que de nous focaliser sur un sujet particulier, nous allons plonger dans la création d’une application fonctionnelle, en partant de zéro. En arrivant à la fin de cette série, vous aurez donc goûté à plusieurs aspects du développement pour iPhone, et serez prêts à approfondir les points qui vous intéressent.

Quelle application allons-nous donc créer ? Voici la petite histoire qui m’a donné l’idée pour ce tutoriel…

L’autre jour, j’ai vu pour la première fois l’image d’un insecte nommé Stenopelmatidae, en anglais le « Potato Bug ». Cet insecte est si grand et hideux que je l’ai trouvé vraiment flippant ! Je me suis alors mis à chercher des images de toutes sortes d’insectes effrayants sur internet. Pour partager ma nouvelle passion, nous allons donc faire une application : « Scary Bugs, Notez les insectes flippants » !

Au cours de la création de cette application, nous allons aborder ces thèmes classiques du développement pour iPhone :

  • Ce dont vous avez besoin pour commencer à développer pour iPhone
  • Comment stocker les données de mon application dans un modèle
  • Comment utiliser les Table Views (vues en table de données) — comment y ajouter ou supprimer des lignes
  • Comment créer la vue détaillée relative à ces lignes
  • Comment supporter les orientations portrait et paysage de l’iPhone
  • Comment utiliser les Navigation Controllers (contrôleurs de navigation)
  • Comment utiliser le sélecteur d’image intégré (nommé Image Picker)
  • Comment utiliser les contrôles classiques tels que les champs de texte, les boutons, les images
  • Comment ajouter une icône et une image par défaut
  • Bonus : Comment gérer les opérations à longue exécution

Ça peut sembler beaucoup, mais pas de panique… nous n’avons pas peur des bugs !

Dans la première partie de cette série en trois chapitres, nous allons voir comment charger notre modèle avec une liste d’insectes et les afficher dans une vue en tableau, une Table View. (Aller directement à la Partie 2 ou Partie 3)

Ce tutoriel s’adresse aux développeurs qui débutent sur iOS, mais on considère que vous êtes déjà à l’aise avec la programmation en général et un peu familier avec le langage Objective-C. Si vous découvrez ce langage, je vous recommande de commencer par lire le guide d’Apple « Objective-C Programming Language Guide » (en anglais), ou de rechercher une introduction au langage en français sur internet.

Ce dont vous avez besoin

Commençons par le commencement : Le développement pour iPhone nécessite un Mac. N’importe quel Mac capable de faire tourner la version la plus récente du système Mac OS conviendra. Si vous n’en avez pas encore et souhaitez économiser, vous pouvez vous orienter vers un Mac Mini bas de gamme, il conviendra parfaitement comme machine de développement.

Ensuite, vous aurez besoin d’obtenir le logiciel XCode, l’EDI d’Apple pour le développement sur iOS. Si vous ne l’avez pas déjà, enregistrez-vous gratuitement comme développeur auprès d’Apple en suivant le lien « register » dans l’iPhone Dev Center, puis téléchargez XCode dans le Mac App Store.

Si vous le souhaitez, vous pouvez vous enregistrer à la version payante de l’iPhone Developer Program qui vous donne un certificat permettant de signer vos application et ainsi les installer sur un appareil de test et les distribuer sur l’App Store. Mais pour essayer simplement le développement sur iOS, un compte gratuit suffit parfaitement.

Si le développement iOS devient sérieux pour vous, vous allez vouloir tester vos travaux sur des appareils bien réels également (iPhone, iPod Touch, iPad). S’il est vrai que l’on peut tester beaucoup de choses avec le simulateur intégré à XCode, certaines API (interfaces de programmation) ne sont pas compatibles avec ce dernier. Aussi, un appareil dédié au développement permet de tester les performances réelles des applications.

C’est tout ! Alors si vous ne l’avez pas encore fait, c’est le moment de télécharger XCode et de le lancer pour passer à la suite !

Bonjour Table View !

Nous allons commencer par utiliser l’un des éléments de contrôle les plus communs sur iPhone, la Table View signifiant « Vue En Tableau ». Nous utiliserons le terme anglais Table View car il s’agit d’un terme technique que vous retrouverez dans le code et dans la documentation Apple, et que le terme français n’apporte pas beaucoup d’information. Vous avez probablement déjà vu des Table Views dans de nombreuses applications, voici quelques exemples :

Exemples de UITableView

Bref, le premier écran de notre application disposera d’une telle vue, pour afficher une liste d’insectes flippants !

Allons-y et commençons par créer le projet en allant dans le menu « File > New Project » d’XCode, puis en choisissant le type de projet « iOS > Application > Master-Detail Application ». Validez avec le bouton Next.

Créer une application avec le modèle Master-Detail

Dans la page suivante, saisissez « ScaryBugs » comme nom de projet dans le champ Product Name, puis saisissez votre identifiant d’entreprise devant le libellé Company Identifier (com.votrenom est la convention habituelle à utiliser). Enfin, sélectionnez iPhone comme appareil cible dans le champ Device Family, et assurez-vous de sélectionner les options « Use Storyboard » et « Use Automatic Reference Counting » (ARC : Comptage Automatique de Références, un outil d’aide à la gestion de la mémoire). Ces options servent à partir d’un modèle de projet configuré pour utiliser les nouveautés d’iOS 5 que nous verrons dans ce tutoriel. Validez ensuite en cliquant sur le bouton Next.

Réglages du projet pour l’application Scary Bugs

Choisissez l’endroit où vous souhaitez enregistrer le projet et cliquez sur Create. Avant de faire quoi que ce soit, prenons le temps de passer en revue ce que nous avons jusque-là. Dans la barre d’outils en haut de la fenêtre d’XCode, il y a un petit menu contenant le nom du projet, cliquez dans la partie droite de ce menu pour sélectionner l’élément « iPhone 5.x Simulator » et cliquez ensuite sur le bouton Run. Si tout va bien, vous devriez voir le simulateur se lancer et montrer ce début d’application :

L’écran principal créé par le modèle d’application Master-Detail

Vous pouvez toucher le bouton « + » pour insérer une ligne dans le tableau, et toucher une rangée pour voir sa vue détaillée :

Vue détaillée créée par le modèle d’application Master-Detail

Comme vous pouvez le voir, nous avons déjà un projet en état de fonctionnement parce que nous avons choisi le modèle d’application Master-Detail.

Nous n’allons pas étudier en profondeur ce modèle d’application, ce n’est pas le sujet de ce tutoriel, mais notez que nous avons une vue de type Table View et une vue détaillée qui sont vides et prêtes à être remplies par nos soins. Il ne reste plus qu’à y placer nos données !

Pour faire cela, créons une classe pour matérialiser et mémoriser nos insectes flippants.

Un modèle de données flippant : Organisation

Remarquez la hiérarchie de dossiers présente dans le navigateur de projet d’XCode (la section Project Navigator de l’interface est la partie gauche de la fenêtre) :

Le navigateur de projet d’XCode

Le modèle est configuré avec un groupe racine (ScaryBugs) et un sous-groupe nommé « Supporting Files ». Ces groupes servent uniquement à s’organiser, vous êtes libres de les changer comme bon vous semble. Dans notre cas, nous allons avoir un certain nombre de fichiers dans le projet, organisons nous donc un petit peu.

Premièrement, créez un groupe pour stocker les fichiers de l’interface graphique. Pour cela, faites un ctrl-clic sur le groupe ScaryBugs, et choisissez New Group. Ensuite, faites un ctrl-clic sur le nouveau groupe créé et choisissez rename. Nommez-le « GUI », l’abréviation anglaise signifiant « Interface Graphique Utilisateur ». De nombreux termes et mots-clé du langage Objective-C seront en anglais, on prend généralement l’habitude de nommer les objets, variables et groupes en anglais pour ne pas mélanger les langages. Vous n’êtes pas obligés de suivre cette recommandation, mais c’est celle que suivra ce tutoriel. Déplacez les fichiers du groupe racine dans le groupe GUI (à l’exception de Supporting Files). Cela devrait maintenant ressembler à ceci :

Organisation de l’arbre du Project Navigator, partie 1

Maintenant, créez un second groupe, appelez-le « Model », nous allons y ajouter quelques classes pour notre modèle de données. Votre arbre de fichiers devrait maintenant ressembler à ceci :

Création d’un groupe pour le modèle

Avant de commencer, voici comment nous allons organiser les choses, en deux classes :

  1. ScaryBugData : Contient le nom et la note d’un insecte (le suffixe Data signifie Données).
  2. ScaryBugDoc : Contient l’image originale, une réduction de l’image et un objet ScaryBugData.

Cette organisation arbitraire a été principalement choisie pour faciliter la suite du tutoriel, lorsque nous commencerons à enregistrer les données sur le disque, à implémenter le partage de fichiers, etc.

Un modèle de données flippant : Implémentation

Allons-y ! Faites un ctrl-clic sur le groupe Model et choisissez « New File… ». XCode nous demande de choisir le modèle de fichier à créer : sélectionnez le type « iOS > Cocoa Touch > Objective-C class » et validez par le bouton Next.

Création d’un fichier avec le modèle Classe Objective-C

Nommez cette classe ScaryBugData, entrez « NSObject » dans le champ subclass, ce qui signifie que notre classe ScaryBugData est une sous-classe de NSObject (ScaryBugData dérive de la classe NSObject), et validez.

Création d’une classe qui dérive de NSObject dans XCode

Dans la fenêtre popup qui suit, validez à nouveau. Si tout va bien, le navigateur de projet devrait maintenant ressembler à ceci :

Organisation du projet, partie 3

Bien, il est temps de créer le code de la classe ScaryBugData. Remplacez le contenu du fichier ScaryBugData.h par ce qui suit :

#import <Foundation/Foundation.h>
 
@interface ScaryBugData : NSObject
 
@property (strong) NSString *title;
@property (assign) float rating;
 
- (id)initWithTitle:(NSString*)title rating:(float)rating;
 
@end

Ce que nous avons fait est plutôt simple, nous venons de déclarer un objet avec deux propriétés — une chaîne de caractères (NSString) pour le nom de l’insecte, et un nombre à virgule flottante (float) pour sa note. Nous utilisons les attributs de propriétés suivants :

  • strong : Cet attribut, signifiant « fort », indique au moteur d’exécution (runtime) de garder une référence forte vers cet objet. C’est une façon de dire au moteur ARC de garder l’objet en mémoire tant qu’il existe une référence vers celui-ci, et de ne procéder à sa désallocation que lorsqu’il n’existera plus aucune référence. Pour plus d’informations à ce sujet, consultez le tutoriel Beginning ARC in iOS 5 Tutorial (en anglais).
  • assign : Cet attribut signifie que cette propriété soit être assignée directement, sans gestion automatique de la mémoire. C’est ce qu’on utilisera généralement pour les types primitifs (non-objet) comme les nombres à virgule flottante.

Nous avons également défini une méthode pour initialiser la classe, afin d’assigner un nom et une note à un insecte lorsque l’on en créera une instance.

Passez au fichier ScaryBugData.m et remplacez son contenu par ce qui suit :

#import "ScaryBugData.h"
 
@implementation ScaryBugData
 
@synthesize title = _title;
@synthesize rating = _rating;
 
- (id)initWithTitle:(NSString*)title rating:(float)rating {
    if ((self = [super init])) {
        self.title = title;
        self.rating = rating;
    }
    return self;
}
 
@end

Encore une fois, ceci est extrêmement simple. Nous synthétisons nos propriétés (cela crée les accesseurs appropriés), et nous créons la méthode qui initialise nos variables d’instance à partir des valeurs passées en paramètres. Notez que nous n’avons pas besoin d’écrire la méthode dealloc parce que nous utilisons ARC.

Voilà pour ScaryBugData. Suivez maintenant les mêmes étapes pour créer une autre sous-classe de NSObject, cette fois-ci nommée « ScaryBugDoc ».

Remplacez le contenu de ScaryBugDoc.h par :

#import <Foundation/Foundation.h>
 
@class ScaryBugData;
 
@interface ScaryBugDoc : NSObject
 
@property (strong) ScaryBugData *data;
@property (strong) UIImage *thumbImage;
@property (strong) UIImage *fullImage;
 
- (id)initWithTitle:(NSString*)title rating:(float)rating thumbImage:(UIImage *)thumbImage fullImage:(UIImage *)fullImage;
 
@end

Rien de particulier ici — nous créons quelques variables d’instance (les propriétés) et une méthode d’initialisation.

Remplacez le contenu de ScaryBugDoc.m par :

#import "ScaryBugDoc.h"
#import "ScaryBugData.h"
 
@implementation ScaryBugDoc
@synthesize data = _data;
@synthesize thumbImage = _thumbImage;
@synthesize fullImage = _fullImage;
 
- (id)initWithTitle:(NSString*)title rating:(float)rating thumbImage:(UIImage *)thumbImage fullImage:(UIImage *)fullImage {   
    if ((self = [super init])) {
        self.data = [[ScaryBugData alloc] initWithTitle:title rating:rating];
        self.thumbImage = thumbImage;
        self.fullImage = fullImage;
    }
    return self;
}
 
@end

Et voilà, notre modèle de données est complet ! Il est temps de créer quelques échantillons de données et de les afficher dans la Table View.

Une liste d’insectes différente

Tout d’abord, il nous faut configurer notre table view de sorte qu’elle soit capable d’afficher une liste d’objets de type ScaryBugDocs. La première chose que nous devons faire est de modifier la table view pour qu’elle renvoie une liste de rangées dynamique (plutôt qu’une rangée unique codée « en dur » comme c’est le cas dans certains modèles de base).

Pour cela, ouvrez le fichier MainStoryboard.storyboard. Cela vous permet de mettre en page visuellement les différents écrans de l’application. Comme vous pouvez le voir, l’application possède actuellement un contrôleur de navigation (le Navigation Controller fais en sorte de passer facilement d’un écran à l’autre), également un écran « master » comme contrôleur racine, et un écran « detail » comme contrôleur secondaire.

Mise en page du Storyboard principal

Sélectionnez le contrôleur Master View Controller et dans l’aire de sélection dans le panneau de gauche, sélectionnez la table view. Dans l’inspecteur à droite, assurez-vous que le champ Content (Contenu) a pour valeur Dynamic Prototypes (Prototypes dynamiques).

Configurer la table view pour utiliser des cellules à prototype dynamique

C’est ce qui vous permet ensuite de concevoir le type de cellule de la table view dans l’éditeur de Storyboard, et ainsi de créer facilement des instances de cette cellule plus tard dans le code. Nous voulons simplement utiliser une cellule basique, assurons nous donc que notre cellule utilise le style Basic.

Sélectionnez la cellule de la table view à gauche, et dans l’inspecteur d’attributs, vérifiez que le champ Style a pour valeur Basic. Juste en dessous, écrivez l’identifiant que nous utiliserons dans le champ Identifier : « MyBasicCell ».

Réglage du style et de l’identifiant de cellule

Pour plus d’informations sur la création de cellules personnalisées, consultez le tutoriel Beginning Storyboards in iOS 5 Tutorial (en anglais).

Bien, maintenant que notre table view est configurée visuellement comme nous le souhaitons, il nous faut adapter le code pour remplir la table avec une liste d’insectes flippants.

Nous stockerons nos objets ScaryBugDocs (qui contiennent les données d’insectes) dans un tableau de type NSMutableArray. C’est une classe qui permet de gérer une collection d’objets sous forme de tableau dynamique (dont la taille peut changer au fil de l’exécution du code).

Ajoutez les lignes qui suivent au fichier MasterViewController.h, entre les lignes @interface et @end :

@property (strong) NSMutableArray *bugs;

Ce sera la variable d’instance (ou propriété) que nous utiliserons pour conserver notre liste d’insectes.

Maintenant, ouvrez le fichier MasterViewController.m pour y faire les changements suivants :

// En haut du fichier, ajoutez les imports suivants
#import "ScaryBugDoc.h"
#import "ScaryBugData.h"
 
// Juste après le mot clé @implementation
@synthesize bugs = _bugs;
 
// À la fin de la méthode viewDidLoad, ajoutez
self.title = @"Scary Bugs";
 
// Remplacez la déclaration « return » dans shouldAutorotateToInterfaceOrientation par ceci
return YES;
 
// Remplacez la déclaration « return » dans tableView:numberOfRowsInSection par la ligne
return _bugs.count;
 
// Remplacez la méthode tableView:cellForRowAtIndexPath par ce bloc de code
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView
                             dequeueReusableCellWithIdentifier:@"MyBasicCell"];
    ScaryBugDoc *bug = [self.bugs objectAtIndex:indexPath.row];
    cell.textLabel.text = bug.data.title;
    cell.imageView.image = bug.thumbImage;
    return cell;
}

Voilà, nous avons enfin de la matière intéressante à discuter !

Premièrement, remarquez (dans la méthode viewDidLoad) que nous assignons la valeur “Scary Bugs” à une propriété « title » de l’objet en cours (self, pour soi-même). Ce title est une propriété spéciale, incluse dans tous les View Controllers — les classes jouant le rôle de contrôleur des vues. Lorsque le Navigation Controller affichera la vue associée à un contrôleur, il inscrira le contenu de la propriété title dans la barre de titre. Donc, en assignant cette valeur à la propriété title, nous devrions voir le titre « Scary Bugs » s’afficher en haut de notre application !

Ensuite, notez que nous retournons toujours « YES » dans la méthode shouldAutorotateToInterfaceOrientation, dont le nom se traduit littéralement comme « doit se tourner automatiquement vers l’orientation de l’interface », ce qui signifie que nous devrions être capable de supporter toutes les orientations — Portrait et Paysage, dans deux sens pour chacune. Lors de l’exécution, le système qui détecte un changement d’orientation de l’appareil pose la question au contrôleur : La vue doit-elle s’adapter à la nouvelle orientation ? Nous répondons « OUI ». Comme notre classe est de type UITableViewController, c’est tout ce que nous avons à faire pour cela, la vue s’adaptera automatiquement !

Ensuite, lorsque l’on construit une table view avec des rangées dynamiquement assignées, nous devons surcharger les méthodes numberOfSectionsInTableView et numberOfRowsInSection pour dire au système combien de sections et de rangées comporte notre tableau. Pour la méthode numberOfSectionsInTableView (nombreDeSectionsDansLaTable), nous n’avons rien à faire car elle est déjà conçue pour ne renvoyer qu’une section, ce qui nous convient ici. Pour la méthode numberOfRowsInSection qui doit renvoyer le nombre de rangées, nous retournons le nombre d’objets contenus dans notre tableau de stockage (que nous n’avons pas encore rempli) : _bugs.count.

Enfin, nous implémentons la méthode tableView:cellForRowAtIndexPath. C’est certainement la méthode la plus importante à implémenter lorsque l’on construit une table view, son rôle est de configurer et de renvoyer les cellules de la table à afficher. La méthode est appelée une fois pour chaque cellule, en indiquant le numéro de la ligne demandée (indexPath).

Voyons en détail ce que nous y faisons, puisque c’est si important :

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView
                             dequeueReusableCellWithIdentifier:@"MyBasicCell"];
    ScaryBugDoc *bug = [self.bugs objectAtIndex:indexPath.row];
    cell.textLabel.text = bug.data.title;
    cell.imageView.image = bug.thumbImage;
    return cell;
}

La première ligne appelle une fonction d’assistance « dequeueReusableCellWithIdentifier » pour obtenir un objet réutilisable pour créer notre cellule. De quoi s’agit-il ?

En fait, il s’agit d’une optimisation des performance importante. Gardez à l’esprit qu’une table view peut contenir un très grand nombre de rangées, mais que seulement une petite portion ne sera affichée à l’écran simultanément. Ainsi, plutôt que de créer de nouveaux objets pour gérer les cellules à afficher lorsque l’utilisateur fait défiler une table à l’écran, le système améliore les performances en recyclant les cellules cachées — il les ré-utilise pour afficher les nouvelles.

La fonction dequeueReusableCellWithIdentifier sert à cela. S’il y a des cellules prêtes à être recyclées (suite au défilement de la table à l’écran), la fonction nous en fournit une. Sinon, elle en créée une nouvelle et nous la fournit directement également. Il est important de noter que l’on précise ici le type de cellule à créer ou à recycler : “MyBasicCell”. Cet identifiant n’est pas choisi au hasard, c’est celui que nous avions configuré (dans Interface Builder en éditant le Storyboard) à notre cellule de type basic.

Dans l’éditeur de Storyboard, vous pouvez personnaliser l’apparence et le contenu de la cellule, ou utiliser l’un des types de cellules inclus à iOS. Dans notre cas, nous avons choisi le style Basic qui contient un emplacement pour un libellé et une image que nous pouvons assigner.

Si vous vous demandez à quoi ressemblent les différentes options de style de cellules, consultez l’article de la documentation d’Apple suivant : Table View Programming Guide (en anglais).

Enfin, nous assignons une valeur aux propriétés textLabel et imageView (ce sont les propriétés essentielles des cellules de style Basic) pour configurer notre cellule.

Croyez-le ou non mais c’est tout ce que nous avons à faire ! Il ne nous reste plus qu’à créer un petit échantillon de données pour tester notre table view.

Scary Bug : des images d’insectes flippants !

Bien sûr il nous faut quelques images d’insectes flippants pour cela ! Vous pouvez en rechercher quelques-unes sur internet, ou télécharger ces images d’insectes que j’ai trouvées sur le site stock.xchng.

Lorsque vous aurez téléchargé ces fichiers ou obtenu les vôtres, glissez-les sur le groupe racine de l’arbre dans le navigateur de projet (panneau de gauche). Quand la fenêtre popup apparaît, assurez vous que la case « Copy items into destination group’s folder (if needed) » est cochée, puis validez par le bouton Add.

Ajout d’images d’insectes flippants au projet

Ensuite, ouvrez le fichier AppDelegate.m et faites les changements suivants :

// Tout en haut du fichier, ajoutez les imports suivants
#import "MasterViewController.h"
#import "ScaryBugDoc.h"
 
// Au début de la méthode application:didFinishLaunchingWithOptions
ScaryBugDoc *bug1 = [[ScaryBugDoc alloc] initWithTitle:@"Potato Bug" rating:4 thumbImage:[UIImage imageNamed:@"potatoBugThumb.jpg"] fullImage:[UIImage imageNamed:@"potatoBug.jpg"]];
ScaryBugDoc *bug2 = [[ScaryBugDoc alloc] initWithTitle:@"House Centipede" rating:3 thumbImage:[UIImage imageNamed:@"centipedeThumb.jpg"] fullImage:[UIImage imageNamed:@"centipede.jpg"]];
ScaryBugDoc *bug3 = [[ScaryBugDoc alloc] initWithTitle:@"Wolf Spider" rating:5 thumbImage:[UIImage imageNamed:@"wolfSpiderThumb.jpg"] fullImage:[UIImage imageNamed:@"wolfSpider.jpg"]];
ScaryBugDoc *bug4 = [[ScaryBugDoc alloc] initWithTitle:@"Lady Bug" rating:1 thumbImage:[UIImage imageNamed:@"ladybugThumb.jpg"] fullImage:[UIImage imageNamed:@"ladybug.jpg"]];
NSMutableArray *bugs = [NSMutableArray arrayWithObjects:bug1, bug2, bug3, bug4, nil];
 
UINavigationController * navController = (UINavigationController *) self.window.rootViewController;
MasterViewController * masterController = [navController.viewControllers objectAtIndex:0];
masterController.bugs = bugs;

Ici, nous utilisons la méthode d’initialisation de ScaryBugDoc pour créer quelques insectes de test, en leur attribuant un nom (title), une note (rating) et des images pour chaque. Nous les ajoutons tous à un tableau de données de type NSMutableArray que nous transmettons au contrôleur de notre table view par son paramètre bugs.

Nous savons que l’objet auquel nous passons le tableau bugs est bien notre contrôleur de table view parce qu’il est le premier View Controller dans la pile du Navigation Controller, selon notre storyboard. Il y a d’autres moyens d’obtenir un pointeur vers l’objet qui nous intéresse mais pour l’instant, c’est le plus simple pour nous.

Et voilà ! Compilez et lancez l’application, et si tout se passe bien, vous devriez voir une liste plutôt flippante d’insectes dans votre table view !

Table View d’insectes flippants

Et maintenant ?

Voici un fichier du projet avec tout le code que nous avons fait jusqu’à présent dans cette série de trois didacticiels.

Merci de m’indiquer si quelque chose vous semble confus ou si vous aimeriez qu’une partie soit un peu plus développée.

Dans la suite de cette série, nous verrons comment créer la vue détaillée de nos insectes afin de les éditer et les noter !

Ray Wenderlich

Ray is an indie software developer currently focusing on iPhone and iPad development, and the administrator of this site. He’s the founder of a small iPhone development studio called Razeware, and is passionate both about making apps and teaching others the techniques to make them.

When Ray’s not programming, he’s probably playing video games, role playing games, or board games.

Commentaires

3 Comments

  • Merci pour ce tuto ! trs complet !
    gtrcrew
  • Bonjour ! C'est pourtant trs simple ! Pas besoin d'avoir de connaissance particulire, ni de tlchargement faire, c'est gratuit et avec un rendu trs pro et design !
    Tout est expliqu dans cette courte vido ! https://www.youtube.com/watch?v=HJ3CaOIFy4o
    NielsAppleAdict
  • Bonjour, je suis sur Xcode 5, et je ne trouve pas la mthode shouldAutorotateToInterfaceOrientation dans le fichier MasterViewController.m. Est-ce normal ? quel endroit faut-il l'ajouter, et quelle est la ligne complte ? Merci
    Karov

Other Items of Interest

Newsletter mensuelle de Ray

Inscrivez-vous pour recevoir une newsletter mensuelle avec mes liens de développement favoris et recevez un très long tutoriel gratuit comme bonus!

Annoncez avec nous!

Nos livres

Notre Equipe

Tutorial Team

  • Kyle Richter
  • Tony Dahbura

... 50 en tout!

Update Team

  • Andy Pereira
  • Ray Fix

... 15 en tout!

Equipe de rédaction

  • Matt Galloway

... 23 en tout!

Code Team

  • Orta Therox

... 3 en tout!

Équipe de traduction

  • Marina Mukhina

... 33 en tout!

Spécialistes en la matière

... 4 en tout!