Articles taggés avec 'UIAlertView'

Comment développer en PHP avec Xcode et Objective-C

Combien de programmeurs à utiliser, j'ai aussi construire ma propre bibliothèque de fonctions prêtes à être réutilisées dans de multiples projets et des contextes multiples. Permettez-moi de changer le titre de ce post, peut-être un peu plus «risquées mais, néanmoins, comme nous le verrons, non loin de la réalité.

En Objective-C, vous pouvez écrire et appeler C / C + +, y compris l'assemblage pour cette question. Cette caractéristique en fait un langage très polyvalent et, à certains égards, phénoménal. D'une part, vous pouvez utiliser et apprécier la syntaxe purement de l'Objective-C, d'autre part vous pouvez exécuter le code plus rapide portage écrit en ANSI C (peut-être pour Digital Unix ou Sun) et peut s'adapter confortablement dans nos applications iPhone ou iPad; sans parler de tous le noyau BSD est déjà disponible sur Mac OS X!

Suite ...

iPhone SecondApp: Devinez le nombre - Partie 2

Comme mentionné iPhone FirstApp: Devinez le nombre - Partie 1 , nous voyons comment faire une application pour l'iPhone d'Apple sans utiliser Interface Builder! En effet, nous allons éliminer les fichiers physiques créés par Interface Builder, Xcode assistant. A la fin de ce post, alors, nous avons une demande identique à tous égards, à celle obtenue dans la première partie, avec la différence que nous allons atteindre tous nos composants visuels, y compris la fenêtre principale, complètement à code.

L'application déjà fait, si vous voulez juste à télécharger, est disponible sur mon référentiel Google Code:

Je tiens à signaler immédiatement que la ZIP de cet exemple un poids inférieur à la dernière fois! :)

Nous créons le projet

Nous commençons par créer notre projet SecondApp (pour la distinguer de FirstApp), mais cette fois choisissez Fenêtre application basée sur:

newproject

Maintenant, nous allons supprimer tout ce qui concerne Interface Builder. : eliminatelo anche dal file system, quindi selezionate Also Move to Trash . Supprimez le fichier MainWindow.xib , situé dans le dossier Resources : aussi le supprimer du système de fichiers, puis sélectionnez Déplacer vers la corbeille aussi. nella casella Main nib file base name : Sélectionnez ensuite le fichier SecondoApp-info.plist et de supprimer la référence à l' MainWindow nib boîte de nom de fichier de base principale:

deleteib

A ce stade, nous n'avons plus de n'importe quel ordinateur Windows, au moins par Interface Builder. , e modifichiamo la funzione main() in questo modo: Nous avons donc ouvrir le fichier main.m , situé dans Other Sources , et de modifier la fonction main() comme ceci:

1
2
3
4
5
6
7
8
9
10
11
int argc, char * argv [ ] ) { int main (int argc, char * argv []) {

pool = [ [ NSAutoreleasePool alloc ] init ] ; NSAutoreleasePool * pool = [[ NSAutoreleasePool alloc] init];

/ / En supprimant le fichier. XIB nous avons manqué le point
/ / Délégué à l'APP, puis le passer à «la main»
UIApplicationMain ( argc, argv, nil , @ "SecondAppAppDelegate" ) ; int RETVAL = UIApplicationMain (argc, argv, nul, @ "SecondAppAppDelegate");

; [Communiqué de piscine];
retour retVal;
}

Ouvrez SecondAppAppDelegate.me puis créer la fenêtre principale dans le code suivant:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void ) applicationDidFinishLaunching : ( UIApplication * ) application { - (Void) applicationDidFinishLaunching: (UIApplication *) application {

/ / Retourne la taille de l'écran (320, 480)
UIScreen mainScreen ] applicationFrame ] ; CGRect windowRect = [[Ecran UIScreen] applicationFrame];
/ / Création d'une fenêtre - comme nous l'avons fait dans Interface Builder bye bye
[ [ UIWindow alloc ] initWithFrame : windowRect ] ; MainWindow UIWindow * = [[UIWindow alloc] initWithFrame: windowRect];
/ / Définir le fond de la fenêtre au jaune, à différencier
/ / La FirstApp demande antérieure
[ UIColor yellowColor ] ] ; [SetBackgroundColor MainWindow: [UIColor yellowColor]];

mainWindow ] ; [Self setWindow: mainWindow];
; [Fenêtre makeKeyAndVisible];

; [MainWindow release];
}

Vous pouvez déjà tester l'application, si vous obtenez une fenêtre jaune vous avez tout fait correctement!

, necessario solo se si usa Interface Builder. Dans le fichier SecondAppAppDelegate.h nous pouvons éliminer IBOutlet , uniquement nécessaire si vous utilisez Interface Builder. Également ajouter ici que nos variables globales, la dernière fois que nous étions entrés dans le contrôleur. Puis modifier le fichier SecondAppAppDelegate.h :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Import <UIKit/UIKit.h>

NSObject <UIApplicationDelegate> { SecondAppAppDelegate @ interface: NSObject {<UIApplicationDelegate>
UIWindow * fenêtre;

UITextField * nombre;
UIButton * bouton;
numeroACaso int;
}

nonatomic, retain ) UIWindow * window; @ Property (nonatomic, retenir) UIWindow * fenêtre;

void ) controllaNumero; - (Void) getNumber;

@ Fin

, in quanto non stiamo usando Interface Builder. Encore une fois, nous avons préparé la définition de méthode controllaNumero , comme la dernière fois, mais nous avons éliminé l'indication IBAction , parce que vous n'utilisez pas d'Interface Builder.

Nous construisons l'interface à partir du code

C'est le temps de créer du code en utilisant tous les composants de notre interface. ed inseriamo il seguente codice: Revenons au fichier SecondAppAppDelegate.m , posizioniamoci avant [mainWindow release] et insérez le code suivant:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/ / Création de la barre de titre
[ [ UINavigationBar alloc ] initWithFrame : CGRectMake ( 0.0 , 0.0 , 320.0 , 44.0 ) ] ; UINavigationBar myNavigationBar * = [[UINavigationBar alloc] initWithFrame: CGRectMake (0.0, 0.0, 320.0, 44.0)];
myNavigationBar.barStyle = UIBarStyleDefault;
[ [ UINavigationItem alloc ] initWithTitle : @ "Indovina un numero" ] ; UINavigationItem navigationItem * = [[UINavigationItem alloc] initWithTitle: @ "Devinez un nombre"];
navigationItem animated : NO ] ; [MyNavigationBar pushNavigationItem: navigationItem animé: NO];
myNavigationBar ] ; [Fenêtre addSubview: myNavigationBar];

/ / Création de l'étiquette
[ [ UILabel alloc ] initWithFrame : CGRectMake ( 10 , 50 , 300 , 80 ) ] ; UILabel MyLabel * = [[UILabel alloc] initWithFrame: CGRectMake (10, 50, 300, 80)];
UIColor clearColor ] ; myLabel.backgroundColor = [UIColor clearColor];
; myLabel.numberOfLines = 2;
"iPhone ha pensato un numero da 1 a 10, prova ad indovinarlo?" ; myLabel.text = @ "iPhone a conçu un numéro de 1 à 10, essayez de deviner?"
myLabel ] ; [Fenêtre addSubview: MyLabel];

/ / Création de saisie de texte
UITextField alloc ] initWithFrame : CGRectMake ( 10 , 120 , 300 , 30 ) ] ; = nombre [[UITextField alloc] initWithFrame: CGRectMake (10, 120, 300, 30)];
numero.borderStyle = UITextBorderStyleRoundedRect;
numero.textAlignment = UITextAlignmentCenter;
numero.keyboardType = UIKeyboardTypeNumberPad;
"Inserisci il numero" ; numero.placeholder = @ "Entrez le numéro";
numero ] ; [Fenêtre addSubview: nombre];

/ / Créer le bouton
UIButton buttonWithType : UIButtonTypeRoundedRect ] ; bouton = [UIButton buttonWithType: UIButtonTypeRoundedRect];
10 , 180 , 300 , 30 ) ; bottone.frame = CGRectMake (10, 180, 300, 30);
@ "Premi qui" forState : UIControlStateNormal ] ; [Bouton setTitle: @ "Cliquez Ici" Forst: UIControlStateNormal];
self action : @selector ( controllaNumero ) forControlEvents : UIControlEventTouchUpInside ] ; Bouton [AddTarget: action d'auto: @ selector (getNumber) forControlEvents: UIControlEventTouchUpInside];
bottone ] ; [Fenêtre addSubview: bouton];

; [MyLabel release];
; [NavigationItem release];
; [MyNavigationBar release];

della scorsa volta, subito dopo il [mainWindow release]; inseriamo: Depuis le « applicationDidFinishLaunching correspond à viewDidLoad que la dernière fois, juste après le [mainWindow release]; insérer:

1
+ arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%;

Maintenant, nous pouvons faire est de mettre en œuvre la méthode controllaNumero , qui sera identique (à part le prototype) à ce moment-là utilisé en dernier:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void ) controllaNumero { - (Void) {getNumber
"Premuto bottone di controlla numero" ) ; NSLog (@ "nombre Pressé contrôle bouton");
[ numero.text integerValue ] ; numeroInserito = int [numero.text integerValue];
message; NSString * message;
"Il numero inserito è %d" , numeroInserito ) ; NSLog (@ "Le numéro saisi est% d", numeroInserito);
numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) {
"Troppo basso..." ; message = @ "Trop peu ...";
( numeroInserito> numeroACaso ) { } Else if (numeroInserito> numeroACaso) {
"Troppo alto..." ; message = @ "Trop haut ...";
( numeroInserito == numeroACaso ) { } Else if (numeroInserito numeroACaso ==) {
"Bravo hai indovinato" ; message = @ "Bravo, vous avez deviné»;
+ arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%;
"Numero pensato %d" , numeroACaso ) ; NSLog (@ "% d Nombre pensé," numeroACaso);
}
[ [ UIAlertView alloc ] UIAlertView alertMessaggio * = [[UIAlertView alloc]
"Responso" initWithTitle: @ "Réponse"
message: message
déléguée: néant
"OK" cancelButtonTitle: @ "OK"
] ; otherButtonTitles: nil];
; [AlertMessaggio spectacle];
; [AlertMessaggio release];
"" ; numero.text @ = "";
}

Nous en avons terminé!

Conclusions et considérations

, proprio perchè volevo lasciarlo il più semplice e snello possibile e, anche, per dimostrare che non sono elementi sempre necessari. Cet exemple ne fait pas une utilisation directe d'un UIView ou UIViewController , juste parce que je voulais quitter ce aussi simple et rationnel que possible et, aussi, de montrer que les éléments ne sont pas toujours nécessaires. Toutefois insérer des objets directement dans la fenêtre peut avoir un certain sens, dans cet exemple et d'autres contextes sporadiques. portano comunque benefici in tantissimi altri casi, ein alcuni sono praticamente indispensabili; come avremo modo di vedere in futuro. L'utilisation de UIView et UIViewController apporter des avantages dans de nombreux autres cas, cependant, certaines sont pratiquement indispensables ein, comme nous le verrons dans le futur.

Suite ...

iPhone FirstApp: Devinez le nombre - Partie 1

La première source que je me levai dans mes mains a été écrit en Basic et se composait de quelques lignes de code, de m'avoir éclairé. C'était un jeu simple qui génère un nombre aléatoire de 1 à 10 et, par saisie au clavier, vérifiez que le numéro saisi est Maggioni, inférieur ou égal au nombre aléatoire. En dépit de sa rude simplicité reste, pour moi, l'un des meilleurs exemples - simple, amusant et pratique - pour expliquer à ceux qui ne savent rien sur la programmation ce que signifie réellement pour «programme informatique». J'ai donc décidé de le proposer pour l'iPhone d'Apple, peut-être va aider quelqu'un ...

Suite ...

extrait de code iPhone: UIAlertView

La classe UIAletrView vous permet d'afficher une fenêtre modale (animation) pour informer et / ou vous demander quelque chose. Le UIAlterView (alertes vue) sont très confortables et faciles à utiliser. La gestion de la réponse de l'utilisateur est résolu par l'interception de l'indice du bouton pressé. Pour visualiser d'un simple UIAlterView il suffit d'écrire:

1
2
3
4
/ / Alert avec un bouton simple, sans rappel
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" cancelButtonTitle : @ "Annulla" otherButtonTitles : nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titre" message: @ "Message" cancelButtonTitle: @ "Annuler" otherButtonTitles: nil];
; [MyAlert spectacle];
; [MyAlert presse];

Et 'possible d'ajouter des boutons supplémentaires otherButtonTitles :

1
2
3
4
/ / Alerte à deux simples boutons, pas de rappel
[ [ UIAlertView UIAlertView MyAlert * = [[UIAlertView
; [MyAlert spectacle];
; [MyAlert presse];

: Pour déterminer quel bouton a été pressé, ajoutez simplement le delegate:self initialisation d'objets UIAlterView :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / Alert simple avec deux boutons et rappels
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titre" message: @ "Message" délégué: cancelButtonTitle auto: @ "Annuler" otherButtonTitles: @ "OK", nil];
; [MyAlert spectacle];
; [MyAlert presse];

/ / La fonction de rappel ressemble à ceci

void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
buttonIndex ) { switch (buttonIndex) {
: cas 1:
/ / Code
break;
}
}

Le rappel alertView besoin d'avoir ce nom, pour plus d'informations, voir UIAlertViewDelegate

punteranno sempre a quella. Avec seulement la callbck alertView:clickedButtonAtIndex plus UIAletrView pointera toujours à cela. Utilisation de la balise du champ UIAletrView , nous pouvons déterminer ce que le «meneur»:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/ / Alert simple avec deux boutons et rappels
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titre" message: @ "Message" délégué: cancelButtonTitle auto: @ "Annuler" otherButtonTitles: @ "OK", nil];
; myAlertA.tag = 1;
; [MyAlert spectacle];
; [MyAlert presse];

/ /
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView myAlertB * = [[UIAlertView alloc] initWithTitle: @ "Titre" message: @ "Message" délégué: cancelButtonTitle auto: @ "Annuler" otherButtonTitles: @ "OK", nil];
; myAlertA.tag = 2;
; [MyAlertB spectacle];
; [MyAlertB release];

/ / Gestion de multiples UIAlertView

void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
"Alert Tag: %i" , alertView.tag ) ; NSLog (@ "Balises d'alerte:% i", alertView.tag);
"buttonIndex: %i" , buttonIndex ) ; NSLog (@ "buttonIndex:% i", buttonIndex);
}

Suite ...

iPhone en Objective-C la syntaxe d'équivalence

La syntaxe avec des crochets en Objective-C est l'une des raisons les plus de frustration pour ceux qui viennent d'autres langues (pour les objets). Toutefois, vous y habituer, vous réalisez combien le code lisible devient trop avec ce mélange de classique et plus distinctement la syntaxe Smalltalk. Par exemple, nous voyons comment la même procédure peut être écrite dans les deux syntaxe. Prenez l'initialisation d'un UIAlertView :

1
2
3
4
5
6
7
8
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titre"
"Messaggio" message: @ "Message"
délégué: auto
"Annulla" cancelButtonTitle: @ "Annuler"
"Ok" , nil ] ; otherButtonTitles: @ "OK", nil];
; myAlert.tag = 1;
; [MyAlert spectacle];
; [MyAlert presse];

Le réglage de la potavamo tag encore ainsi:

1
2
3
4
5
6
7
8
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titre"
"Messaggio" message: @ "Message"
délégué: auto
"Annulla" cancelButtonTitle: @ "Annuler"
"Ok" , nil ] ; otherButtonTitles: @ "OK", nil];
1 ] ; [MISE MyAlert: 1];
; [MyAlert spectacle];
; [MyAlert presse];

Même chose à la lecture lors de l'événement:

1
2
3
4
5
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
alertView.tag == 1 ) { // ... if (alertView.tag == 1) {/ / ...
/ / Ou
alertView tag ] == 1 ) { // ... if ([alertView tag] == 1) {/ / ...
}

Remarque: Pas toutes les propriétés ou les méthodes ont cette syntaxe double. Dans le cas de « UIAlertView nous avons cette double fonctionnalité. Pour les autres objets, ou dans d'autres cas, cependant, un seul des deux pourrait fonctionner ... mais ne me demandez pas pourquoi (selon la façon dont les développeurs ont défini l'interface).

Suite ...

iPhone: la propriété tag le plus utile

Tous les objets qui dérivent de <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView">UIView</a> héritent des propriétés utiles <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW25">tag</a> Cette propriété est un véritable utilisateur de données (une «place» que le développeur utilise à des fins générales) de type <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html#//apple_ref/doc/c_ref/NSInteger">NSInteger</a> Alors, où nous pouvons stocker que des nombres.

Les usages auxquels ils peuvent dépend évidemment des circonstances cependant, il est utile d'identifier un objet en particulier de prendre une occurrence commune. Par exemple, imaginez que vous avez deux <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIAlertView_Class/UIAlertView/UIAlertView.html">UIAlertView</a> répondre à un même événement:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/ / Première alerte
[ [ UIAlertView alloc ] initWithTitle : @ "Primo" message : @ "Primo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Première" message: @ "First Alert" délégué: cancelButtonTitle auto: @ "OK" otherButtonTitles: néant, de néant];
; [Alerte] montrent;
; [Communiqué Alerte];

/ / ...

/ / Alert deuxième
[ [ UIAlertView alloc ] initWithTitle : @ "Secondo" message : @ "Secondo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "deuxième" message: @ "deuxième alerte« délégué: cancelButtonTitle auto: @ "OK" otherButtonTitles: néant, de néant];
; [Alerte] montrent;
; [Communiqué Alerte];

/ / Événement
/ / Cliccandi bouton OK de cette fonction sera appelée Alter
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
/ / TODO
}

Remarque: les exemples de code en C + +, vous trouverez les directions. Ce n'est pas tout à fait correcte, car, comme vous le savez, le langage est Objective-C. Cela est dû au fait que les plugins que j'utilise pour afficher le code source ne supporte pas l'Objective-C et C + + est celui qui s'approche de lui le meilleur.

Comment faire la différence entre l'alerte deux? Précisément en utilisant la balise de propriété. Après la création du alert suffit d'entrer:

1
2
3
4
5
6
7
8
9
10
11
12
13
/ / Première alerte
[ [ UIAlertView alloc ] initWithTitle : @ "Primo" message : @ "Primo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Première" message: @ "First Alert" délégué: cancelButtonTitle auto: @ "OK" otherButtonTitles: néant, de néant];
1 ] ; // imposto il tag di questo Alert ad 1 [MISE alerte: 1] / / Définit le tag de cette Alerte à 1
; [Alerte] montrent;
; [Communiqué Alerte];

/ / ...

/ / Alert deuxième
[ [ UIAlertView alloc ] initWithTitle : @ "Secondo" message : @ "Secondo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "deuxième" message: @ "deuxième alerte« délégué: cancelButtonTitle auto: @ "OK" otherButtonTitles: néant, de néant];
2 ] ; // imposto il tag di questo Alert ad 2 [MISE Alerte: 2] / / Définit le tag de cette Alerte à 2
; [Alerte] montrent;
; [Communiqué Alerte];

Maintenant modifier l'événement afin de comprendre ce qui alerte a été fermée:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / Événement
/ / Cliccandi bouton OK de cette fonction sera appelée Alter
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
alertView.tag ) { switch (alertView.tag) {
: cas 1:
/ / First Alert
break;
: cas 2:
/ / Selon alerte
break;
par défaut:
break;
}
}

Exact même technique peut être utilisée que si nous avons une série de <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html">UIButton</a> run-time. Par exemple:

1
2
3
4
5
6
7
8
9
10
unsigned int i = 0 ; i < 10 ; i ++ ) { for (unsigned int i = 0; i <10; i + +) {
[ [ UIButton buttonWithType : UIButtonTypeCustom ] initWithFrame : CGRectMake ( i * 20 , i * 20 , 20 , 20 ) ] ; UIButton * myButton = [[UIButton buttonWithType: UIButtonTypeCustom] initWithFrame: CGRectMake (i * 20, * 20, 20, 20)];
@ "But" forState : UIControlStateNormal ] ; [MyButton setTitle: @ "Mais", Forst: UIControlStateNormal];
i ] ; // imposto il tag [MISE MyButton: i]; / / Définit le tag

/ / Le même événement pour tous
self action : @selector ( onTouchUpInside : ) forControlEvents : UIControlEventTouchUpInside ] ; [AddTarget MyButton: action d'auto: @ selector (onTouchUpInside:) forControlEvents: UIControlEventTouchUpInside];

mybutton ] ; [Self.view addSubview: myButton];
}

(dove eseguiamo un casting <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView">UIView</a> Dans le cas onTouchUpInside récupérer de l' sender (où nous effectuons une coulée <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView">UIView</a> la propriété <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW25">tag</a>

1
2
3
4
void ) onTouchUpInside : ( id ) sender { - (Void) onTouchUpInside: (id) sender {
( ( UIView * ) sender ) .tag; unsigned int button_tag = ((UIView *) sender) tags.;
/ / TODO
}

Suite ...