iPhone FirstApp: Devinez le nombre - Partie 1

Mardi, Juin 23, 2009

La première source que je suis passé par les mains a été écrit en Basic et se composait de quelques lignes de code, pour m'éclairer. C'était un jeu simple qui génère un nombre aléatoire de 1 à 10 et, à travers les entrées au clavier, assurez-vous que le numéro a été entré Maggioni, inférieur ou égal au nombre aléatoire. Malgré sa simplicité brut demeure, pour moi, l'un des meilleurs exemples - simple, amusant et pratique - d'expliquer à quelqu'un qui ne connaît rien à la programmation en fait ce que l'on entend par «programme d'ordinateur». J'ai donc décidé de le présenter à nouveau pour Apple iPhone, peut-être aider quelqu'un ...

A ce poste, nous parvenons à une version particulière de «Devinez le nombre" et a appelé FirstApp. Plus tard réécrire la même application avec des méthodes différentes, telles que la création manuelle d'un UIView ou legs d'Interface Builder.

La demande déjà fait, si vous ne voulez télécharger, est disponible sur mon référentiel Google Code:

1 - Commencer

Ouvrez Xcode, choisissez Nouveau projet dans le menu Fichier et choisissez, pour cette version, à partir de l'affichage classique à base d'application (la prochaine fois que nous partons de Window-Based Application pour obtenir exactement le même résultat.) Appelez le FirstApp projet et enregistrez-le là où cela vous convient le plus.

XCode New Project

Comme vous le remarquerez que j'utilise toujours la version de XCode pour SDK 2.2.1, parce que le SDK 3.0 sont encore "très" stable. Gardez à l'esprit cette image parce que avec la nouvelle version de XCode Certains temples ne sont pas seulement identiques et certaines choses vont changer. Mais pour l'instant vous n'avez pas à vous soucier de ce résultat, si vous utilisiez déjà la dernière version de Xcode.

viewcontroller Dans cette version, nous allons utiliser Interface Builder, puis, tout d'abord, nous allons concevoir notre interface utilisateur. Ouvrons le dossier Ressources et double cliquer sur FirstAppViewController.xib Ce fichier est juste dans Interface Builder, que le fichier MainWindow.xib (voir également l'extension du fichier X I NTERFACE UILDER B).
N'importe quel autre contrôleur sera mis toujours dans ce dossier. Les dossiers restants contiennent tous les autres fichiers de notre demande et, en particulier, nous travaillons beaucoup sur celles figurant dans le dossier Classes.
Pour en revenir à Interface Builder, nous sommes confrontés à un écran blanc qui représente notre View le conteneur dans lequel les objets sont placés UIKit de notre interface utilisateur. Cet objet visuel que nous sommes à la recherche par le biais d'Interface Builder est connecté au fichier FirstAppViewController.m (and. H) présents dans les classes de dossier.

library Dans la fenêtre de la bibliothèque sont tous des éléments visuels pour créer des interfaces standardisées, agréable et accessible sur notre iPhone d'Apple.
Ce sont idéalement rangés par catégorie (voir le panneau bleu en haut). À l'inscription à notre avis, il suffit de sélectionner le composant à partir fienstra Bibliothèque et faites-la glisser dans la fenêtre de notre avis, lorsque vous la placez, le redimensionner et le configurer à volonté (toutes choses réalisables même par code, comme nous allons le voir).
Avant d'aller plus loin, si c'est votre première collaboration avec Interface Builder, profiter d'un peu de tests "des différents composants, et quand elle devient trop forte, assurez-vous que vous obtenez quelque chose comme l'image ci-dessous, ou un titre fait avec composante UINavigationBar un texte d'introduction UILabel un champ texte pour entrer le numéro de deviner UITextField et - enfin - un simple bouton UIButton pour voir si nous avons deviné

view

L'approche des composants dans Interface Builder est à travers une fenêtre particulière toujours divisée en quatre onglets: attributs, connexions, taille et l'identité, une sorte de «inspecteur» des composants. En fonction du composant, sélectionnez la boîte de dialogue est l'identité configurée avec les caractéristiques appropriées de sa composante. Si nous choisissons la UINavigationBar par exemple, nous avons tous les paramètres possibles pour ce type de composant.

ispettore

2 - Code

Maintenant que nous avons créé et placé nos composants visuels de l'interface, nous allons écrire un petit code à les manipuler. Tout d'abord il faut ouvrir le fichier FirstAppViewController.he nous allons nous transformer comme ceci:

Objective-C:
  1. / /
  2. / / FirstAppViewController.h
  3. / / FirstApp
  4. / /
  5. / / Crée par Giovambattista Fazioli le 19/06/09.
  6. / / Copyright Saidmade Ltd 2009. Tous droits réservés.
  7. / /
  8. # <UIKit/UIKit.h> Importation
  9. UIViewController { @ FirstAppViewController interface: UIViewController (
  10. IBOutlet UITextField * nombre;
  11. IBOutlet UIButton * button;
  12. int numeroACaso;
  13. )
  14. controllaNumero; - (IBAction) controllaNumero;
  15. @ End

Lignes 12, 13 et 14 définissent les «variables» de notre sport. Les deux premiers sont des pointeurs vers nos graphiques inclus avec Interface Builder: la zone de texte et un bouton. IBOutlet type davati, sert à créer un lien, une référence, à .xib d'Interface Builder. En effet, si nous voulions créer nos composants franchisés à travers le code, sans utiliser Interface Builder, il suffit de supprimer le IBOutlet le cas échéant. Ligne 17, toutefois, définit une méthode (un message-événement), nous voulons flip lorsque vous cliquez sur le bouton. Dans ce fichier. H (fichier en-tête) nous avons réalisé que des définitions. La mise en œuvre du code est en fait dans le dossier d'examen. M: FirstAppViewController.m En cliquant ici, vous CMD + ALT + HAUT est passée alternativement à partir du fichier fichier. H. M. Nous allons donc modifier FirstAppViewController.m Tout d'abord supprimer les commentaires à viewDidLoad meotdo (33 ème ligne alentours) et laissez-le devenir:

Objective-C:
  1. / / Mettre en œuvre viewDidLoad à faire de configuration supplémentaires après le chargement de la vue, généralement à partir d'une plume.
  2. ) viewDidLoad { - (Void) (viewDidLoad
  3. ; [ViewDidLoad Super];
  4. arc4random ( ) % 10 ; numeroACaso = 1 + arc4random ()% 10;
  5. , numeroACaso ) ; NSLog (@ "% Nombre d pensée», numeroACaso);
  6. )

viewDidLoad est l'une des méthodes invoquée lorsque l'application démarre. Si vous voulez faire correspondre un peu «à la document onload JavaScript ou $(document).ready() de jQuery. J'ai ajouté les lignes représentent les 5 et 6. Les 5, en particulier, crée un certain nombre aléatoires de 1 à 10! Le numéro de la ligne 6, cependant, est que pour le débogage et l'impression sur la console par un logiciel. Maintenant, écrivez le code (le impementazione) de la controllaNumero() méthode controllaNumero() nous avons défini dans le fichier FirstAppViewController.h

Objective-C:
  1. controllaNumero { - (IBAction) (controllaNumero
  2. ) ; NSLog (@ "push-contrôle bouton numérique");
  3. numero.text integerValue ] ; int numeroInserito = [IntegerValue numero.text];
  4. message; NSString * message;
  5. , numeroInserito ) ; NSLog (@ "Le nombre entré est% d", numeroInserito);
  6. numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) (
  7. ; @ Message = "Trop bas ..."
  8. ( numeroInserito> numeroACaso ) { ) Else if (numeroInserito> numeroACaso) (
  9. ; @ Message = "trop haut ..."
  10. ( numeroInserito == numeroACaso ) { ) Else if (numeroInserito == numeroACaso) (
  11. ; @ message = "Bravo, vous l'aurez deviné;
  12. arc4random ( ) % 10 ; numeroACaso = 1 + arc4random ()% 10;
  13. , numeroACaso ) ; NSLog (@ "% Nombre d pensée», numeroACaso);
  14. )
  15. UIAlertView alloc ] initWithTitle : @ "Responso" message : message delegate : nil cancelButtonTitle : @ "OK" otherButtonTitles : nil ] ; UIAlertView * alertMessaggio = [[alloc UIAlertView] initWithTitle: @ "Réponse" Message: délégué message: cancelButtonTitle Nil: @ "OK" otherButtonTitles: nil];
  16. ; [AlertMessaggio show];
  17. ; [AlertMessaggio release];
  18. ; numero.text @ = "";
  19. )

Ce code, dont la dernière à écrire avant de rentrer à Interface Builder, nous pouvons le définir comme le cœur du système, ou mieux de la partie. Car il se produit si le nombre entré dans le texte UITextField est inférieur, supérieur ou égal au nombre «pensée» de notre iPhone. À la lumière des résultats montre une alerte. Ligne 2, comme toujours, c'est seulement pour déboguer et de sortie sur la console un message lorsque vous cliquez dessus. Ligne 4, cependant, est intéressante, cela transforme le contenu textuel de notre champ texte à un nombre entier. Cela est nécessaire pour comparer les numeroACaso nombre aléatoire avec le nombre entré par l'utilisateur. En Objective-C, comme en C, il n'ya pas de conversions de type implicites, comme d'autres langages de haut niveau qui ne supportent pas les variables tipizazzione au sens strict. Dans certaines langues, en fait, vous pouvez comparer les chaînes et les nombres entiers sans effectuer aucune conversion ou le cast explicite.

Ligne 5 prépare un pointeur vers un message de chaîne qui va contenir la réponse à afficher nell'alert. Lignes 9 à 17 Contrôle le nombre entré par l'utilisateur avec le nombre aléatoire et en tirer les conclusions qui s'imposent. J'ai volontairement inséré ces if brutale à rendre parfaitement clair le code. Ou bien nous pourrions utiliser:

Objective-C:
  1. numeroInserito - numeroACaso ) <0 ) ? - 1 : ( ( numeroInserito - numeroACaso ) ? 1 : 0 ) ; décision int = ((numeroInserito - numeroACaso) <0)? - 1: ((numeroInserito - numeroACaso)? 1: 0);
  2. decisione ) { switch (décision) (
  3. 1 : homes - 1:
  4. ; @ Message = "Trop bas ..."
  5. break;
  6. : case 1:
  7. ; @ Message = "trop haut ..."
  8. break;
  9. : case 0:
  10. ; @ message = "Bravo, vous l'aurez deviné;
  11. / Start / again ...
  12. arc4random ( ) % 10 ; numeroACaso = 1 + arc4random ()% 10;
  13. , numeroACaso ) ; NSLog (@ "% Nombre d pensée», numeroACaso);
  14. break;
  15. )

Nous nous associons à la file d'attente avec Interface Builder

Revenons maintenant à Interface Builder, cliquez sur le fichier toujours FirstAppViewController.xib Que faisons-nous permettent maintenant de relier l'interface visuel réalisés avec Interface Builder et le code que nous avons écrit, en particulier avec des composants mis en évidence avec IBOutlet Les éléments que nous devons lier notre code est la zone de texte et un bouton, tel que défini dans l'interface de définition du fichier FirstAppViewController.h Auxquels il avait nommé respectivement numero et le bottone D'Interface Builder Nous avons plusieurs moyens pour relier les composants visuels avec le code, l'un des plus simple est de cliquer avec le bouton droit de la souris sur notre composante visuelle, tels que le champ texte UITextField

iboutlet

Cette fenêtre est différente pour chaque composant, nous montre tout ce que nous pouvons "lien" avec le code. En particulier, nous nous intéressons à la dernière entrée, la section Points de vente Référencement: Nouveau Référencement Outlet. Cliquez sur le "cercle" à droite et - en maintenant enfoncé le bouton de la souris - Faites glisser le princiaple fenêtre FirstAppViewController.xib sur l'icône FirstAppViewController Propriétaire (fichier):

viewcontroller-link

Relâcher le bouton de souris, un menu s'affiche avec une liste de toutes les «variables» (Propriétés) IBOutlet et défini comme UITextField

menu-outlet

Dans notre cas, nous avons numero Répétez la même procédure exacte pour le bouton, en ajoutant que ce dernier avait également défini un événement: - (IBAction) controllaNumero; Finalement otteremo:

ibaction

Conclusions

Si vous avez tout fait correctement, nous c'est fait! Notre jeu est prêt. Au cas où vous pouvez télécharger le source complet ici. Manifestement, ce n'est qu'un exemple et il ya quelques détails manquants pour en faire une application réelle, la 57x57 icônes ajoutés aux contrôles sur le nombre et d'autres détails pour le moment. Le processus de développement décrits ici peuvent être variées, par exemple via Interface Builder une fois, c'est à dire à la fin: avant d'écrire tout le code et puis vous allez sur l'interface Builder pour lier les objets. Dans cet exemple, nous avons agi rapidement sur Interface Builder pour concevoir les grandes lignes de notre interface, depuis la simple demande.

La prochaine fois que nous allons voir comment mettre en œuvre les medisimo "play" sans utiliser Interface Builder.

Related Post

Cet article était utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Chargement ...

Il n'ya pas de commentaires pour cet article

Laissez un commentaire

TAG PERMISSIONS XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre>         // blocco generico [code][/code]       // blocco generico [as][/as]           // Actionscript [css][/css]         // CSS Style Sheet [html][/html]       // HTML [js][/js]           // Javascript [objc][/objc]       // Objective-C [php][/php]         // PHP [sql][/sql]         // SQL