Main Contents

Tutorial Objective-c Xcode et Interface Builder

février 26, 2009

Je me lance dans un nouveau petit tutorial sur la création d’une application simple pour iPhone en utilisant Interface Builder. Je ne vais pas m’attarder sur les notions de la programmation objet ou aux spécificités de Xcode. Pour un tutorial sur Xcode voir le précédent.

On va donc créer une application calculant un montant TTC à partir d’un montant HT et d’une TVA. Il y aura 2 champs de saisie et un bouton. Allez c’est parti !

I) Création du projet

Dans un premier temps on va créer un projet, dans la section iPhone sélectionnez View-Based Application.

Création du projet

Donnez lui un nom et choisissez son emplacement. Moi je vais le nommer TutoIB.
En choisissant un projet de type View-Based Application on gagne un peu de temps car Xcode va nous créer un projet contenant déjà une classe gérant l’application et une classe controller gérant la vue.

On a donc 4 fichiers dans le dossier Classes, en fonction du nom de votre projet les fichiers seront différents
Dans mon projet j’ai :

  • TutoIBAppDelegate.h
  • TutoIBAppDelegate.m
  • TutoIBViewController.h
  • TutoIBViewController.m

Je parlerais pas des différences entre les .h et .m voir mon tutorial précédent.

Et dans le dossier Ressources il y a 2 fichiers qui nous intéressent.

  • TutoIBViewController.xib
  • MainWindow.xib

Doubles cliquez dessus et cela va lancer Interface Builder car ce sont ces fichiers qui décrivent l’interface graphique de notre application. Le MainWindow.xib appelant TutoIBViewController.xib c’est ce dernier qui va nous intéresser.

II) Interface Builder

Vous devriez voir ceci :

Edition de l'interface

Si ce n’est pas le cas, dans la fenêtre double cliquez sur View – UiView.
C’est donc ici que nous allons rajouter les éléments de notre interface. Dans la librairie sélectionnez un Text Field et glissez le dans la fenêtre. Ajoutez en encore 2, puis des labels devant et enfin un boutton pour finalement obtenir ceci.

Interface terminée

L’interface est maintenant terminée, elle est simpliste. Je vous laisse regarder les possibilités de configuration des TextField.

III) Xcode

On attaque maintenant la partie code. Le projet etant simpliste, on ne vas pas créer de classe. On va juste modifier la classe TutoIBViewController. Ouvrez le fichier TutoIBViewController.h et modifiez le code comme ceci.

1
2
3
4
5
6
7
8
9
10
11
#import <UIKit/UIKit.h>
@interface TutoIBViewController : UIViewController {
IBOutlet    UITextField *fieldHT;
IBOutlet    UITextField *fieldTTC;
IBOutlet    UITextField *fieldTVA;
}
@property (nonatomic, retain) IBOutlet UITextField *fieldHT;
@property (nonatomic, retain) IBOutlet UITextField  *fieldTTC;
@property (nonatomic, retain) IBOutlet UITextField *fieldTVA;
- (IBAction)calculate;
@end

On déclare nos 3 champs, pour pouvoir récuperer les valeurs saisies mais aussi modifier la valeur du champs fieldTTC qui est notre résultat. On déclare un IBAction qui est notre fonction de calcule.

Ensuite on implémente tout ca dans  TutoIBViewController.m.

1
2
3
4
5
6
7
8
9
10
11
#import "TutoIBViewController.h"
@implementation TutoIBViewController
@synthesize fieldHT;
@synthesize fieldTVA;
@synthesize fieldTTC;
- (IBAction)calculate {
float a = [[fieldHT text] floatValue];
float b = [[fieldTVA text] floatValue];
float c = a*((b/100)+1);
fieldTTC.text = [NSString stringWithFormat:@"%f",c];
}

On récupère simplement les valeurs saisie dans les champs et on fait le calcule, et on affiche le résultat dans le fieldTTC. Simple non? Mais, comment le compilateur peut il savoir que la variable fiedTTC, fieldTVA et fieldHT correspondent aux textfields qu’on a placé dans l’interface?
Réponse, il faut le lui préciser, et cela se fait très facilement. Sauvegardez les 2 fichiers, et retournez sur Interface Builder.

IV) Les connections

Il faut donc faire la liaison entre les variables de la classe TutoIBViewController et l’interface graphique. Il suffit pour cela de les lier. Dans la fenêtre TutoIBViewController.xib cliquez sur File’s Owner puis sur Pomme-2 pour afficher le « Connection’s inspector ». La vous devriez voir les 3 noms de variable que nous avons déclarer dans la classe. Et donc il suffit de les lier avec les champs correspondant dans notre interface.

interfaceB

Faites de même pour les 3 textfield. Enfin, il faut donner une fonction au bouton. Cette fois, au lieu de partir du File’s Owner, on va partir du bouton. Fait un ctrl-click sur le bouton, et glissez jusqu’au File’s Owner, et sélectionner notre fonction calculate.

Inspecteur

Et voilà, tout est lié, il ne reste plus qu’à lancer la compilaton et l’execution, un pomme-R fera l’affaire !

Nous avons donc fait une petite application très simple. On peut l’améliorer en gérant l’affichage du clavier sur l’iPhone, le nombre de chiffre après la virgule etc..
Je vous laisse chercher 🙂

Catégorie(s): Développement, Iphone, Objective-C, Tutorial | Comments (26)

26 Comments