Dans ce tutoriel nous allons apprendre à gérer des éléments simples dinterface (label, bouton, etc...)
Bref nous obtiendrons quelque chose du genre :

Pour cela, lancer Xcode et choisir «Window-Based Application» dans la fenêtre New Project. Pour que tout soit plus simple nous allons tous nommer notre projet «iPuP».
1) Création de notre vue :
Nous devons tout dabord créer une vue. Sélectionnons donc File->New File et dans la rubrique User Interface choisissons View.
Nommons cette vue «iPuPView»:

Pour sattaquer à linterface double-cliquer sur le fichier «iPuPView.xib».
Nous allons utiliser ici un text field, un boutton et un label.
Comme nous lavons vu dans le tutoriel n°2 il faut rajouter nos éléments dans notre vue :

Bien sûr vous pouvez personnaliser tous ces éléments avec titres, images etc...
Sauvons notre interface et retournons à Xcode.
2) Création dun View Controller :
Il nous faut maintenant créer ce que lon nomme un View Controller.
Mais quest ce donc quun View Controller ?
Les View Controllers (de type UIViewController) jouent un rôle très important pour les applications iPhone car ce sont eux qui gèrent les vues, la navigation entre elles et la mémoire. C'est pour cette raison que chaque vue doit être connectée à un View Controller.
Pour créer un View Controller selectionnons File->New File puis UIViewControllersubclass

Nommons le «iPuPViewController».
Dans le header (iPuPViewController.h), il nous faut créer les objets pour les éléments dinterface que nous avons défini dans notre vue :
#import <UIKit/UIKit.h>
@interface iPuPViewController : UIViewController <UITextFieldDelegate> {
IBOutlet UITextField *textField;
IBOutlet UILabel *lblMessage;
NSString *sNom;
}
@property (nonatomic, retain) IBOutlet UITextField *textField;
@property (nonatomic, retain) IBOutlet UILabel *lblMessage;
@property (nonatomic, copy) NSString *sNom;
-(IBAction)affichageDuTexteLorsDuClick:(id)sender;
@endNous avons ici fait hériter notre classe de la super classe UIViewController.
Le mot clé IBOutlet spécifie au compilateur de rendre ces objets disponibles pour Interface Builder.
Nous avons également déclaré une méthode de gestion de lévénement du clic sur le bouton. Cette méthode est déclarée à laide du mot-clé IBAction qui spécifiera au compilateur de rendre cette méthode disponible pour Interface Builder. Elle prend également un paramètre de type id (qui est générique)
Voilà pour le fichier header. Passons donc à limplémentation de la méthode dans le fichier source (iPuPViewController.m) :
#import "iPuPViewController.h"
@implementation iPuPViewController
@synthesize lblMessage, textField, sNom;
-(IBAction)affichageDuTexteLorsDuClick:(id)sender {
}Vous avez envie de vous tirer les cheveux ? Lisez la suite ... sinon, sautez quelques lignes... 
@property et @synthesize :
Quand une propriété est synthesized, le compilateur va générer des méthodes d'accès aux propriétés conformément aux attributs spécifiés dans la déclaration @property.
Par exemple, si vous spécifiez une propriété "readonly", le compilateur va générer seulement un "getter" mais pas de "setter",
retain est un message envoyé pour dire que l'on réserve l'objet "durablement" cf la page 35 ou paragraphe 8.2 du document de Pierre Chatelier.
Voilà, si vous avez lu, vous vous sentirez peut-être moins bête en vous couchant cette nuit. Sinon, rappelez-vous seulement que @property et @synthesize servent pour communiquer entre les classes.
Ensuite il faut écrire la méthode appelée lors du clic :
-(IBAction)affichageDuTexteLorsDuClick:(id)sender {
//Recevoir le nom et l'inscrire dans une variable
self.sNom = textField.text;
//Création d'une variable temporaire
NSString *sTemp = nil;
//Crétion du texte
sTemp = [[NSString alloc] initWithFormat:@"%@ fait un big up à iPuP",sNom];
//Envoi du texte dans le label
lblMessage.text = sTemp;
//Pour libérer la mémoire après un alloc
[sTemp release];
}
-(BOOL)textFieldShouldReturn:(UITextField *)leTextField {
if (leTextField == textField )
{
[leTextField resignFirstResponder];
}
return YES;
}La seconde méthode permet de fermer correctement le Text Field après la saisie.
3) Ajout de notre vue à la fenêtre principale :
Ajoutons maintenant notre vue comme sous-vue de notre fenêtre principale pour que celle-ci saffiche lors de léxécution.
Pour cela attachons nous dabord au fichier header iPuPAppDelegate.h :
#import <UIKit/UIKit.h>
//Déclaration dite "forward"
@class iPuPViewController;
@interface iPuPAppDelegate : NSObject <UIApplicationDelegate> {
IBOutlet UIWindow *window;
IBOutlet iPuPViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet iPuPViewController *viewController;
@endNous avons ici déclaré un objet de type iPuPViewController. Comme nous pouvons le voir nous avons dû faire une déclaration dite forward, pour préciser au compilateur que la classe iPuPViewController était défini ailleurs.
Passons ensuite au fichier source iPuPAppDelegate.m dans lequel nous devons rendre notre vue visible :
#import "iPuPAppDelegate.h"
#import "iPuPViewController.h"
@implementation iPuPAppDelegate
@synthesize window;
@synthesize viewController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
iPuPViewController *vcontroller=[[iPuPViewController alloc] initWithNibName:@"iPuPView" bundle:[NSBundle mainBundle]];
self.viewController=vcontroller;
[vcontroller release];
//Ajoute notre vue comme sous-vue de la fenêtre principale
[window addSubview:[viewController view]];
// Override point for customization after application launch
[window makeKeyAndVisible];
}
- (void)dealloc {
[window release];
[super dealloc];
}
@endVoilà, c'est tout pour le code. Passons donc à la dernière partie.
4) Connecter les objets à leurs élément respectifs :
Pour finir notre petite application nous devons rattacher les objets créés dans notre code et leurs éléments dinterface respectifs.
Revenons donc une dernière fois à Interface Builder en ouvrant iPuPView.xib.
En premier lieu, il faut définir notre Files Owner comme appartenant à la classe iPuPViewController. Ainsi après avoir sélectionné le Files Owner choisissons longlet identity dans linspecteur, puis iPuPViewController dans le champ classe.
Pour continuer, sélectionnons longlet Connections et relions notre label et notre Text Field à nos élements dinterface. Pour le Text Field il faut également rattacher le champ delegate au Files Owner (dans longlet Connections du Text Field).
Enfin il faut relier la méthode affichageDuTexteLorsDuClick à lélément dont elle gère les événements cest à dire au bouton (choisir loption Touch Up Inside).
Linspecteur devrait donc ressembler à cela :

Ouf !! on a fini et en plus ça fonctionne ! 
Un petit <Pomme + R> dans Xcode après avoir sauvegardé vous en convaincra !
Merci davoir suivi ce tutoriel et nhésitez pas à vous lancer à corps perdu dans le tutoriel n°5.
À bientôt !
Petit exercice
Pour nous perfectionner, un exercice s'impose.
Alors let's go ! 
Reprenons notre code, rajoutons un Text Field pour le prénom, peaufinons notre méthode liée au clic afin qu'elle affiche en plus du text une petite image, laissons mijoter 1/2h à thermostat 7 (euh non là on s'égare
...) et hop nous obtenons une petite application assez sympathique !
Un petit aperçu :

Copyright © 2009 - ipup.fr • création de Jérémy Lagrue • design de Loann Fraillon • contact