2010-10-29 13 views
1
NSString *name = @"John"; 

Je dois passer la valeur de la variable ci-dessus, en cliquant sur le bouton ui. Actuellement, je créé le UIButton comme ci-dessous:Comment envoyer une valeur à la fonction en cliquant sur le bouton ui

sendButton = [[UIButton alloc] initWithFrame:CGRectMake(170, 350, 90, 30)]; 

[sendButton setTitle:@"YES!" forState:UIControlStateNormal]; 

[sendButton addTarget:self action:@selector(sendAlert forControlEvents:UIControlEventTouchUpInside]; 

[sendButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

sendButton.backgroundColor = [UIColor whiteColor]; 

[popoverView addSubview:sendButton]; 

[sendButton release]; 

Lorsque je clique sur le bouton ci-dessus, il appelle la méthode, mais je veux passer la variable (nom) à la fonction ...

S'il vous plaît me guider à obtenir ....

Répondre

1

vous pouvez créer un bouton personnalisé en tant que sous-classe de UIButton vous pouvez créer des propriétés pour cette

par exemple

dans .h fichier

@interface CustomButton : UIButton 
{ 
    NSString *name; 

} 

@property (nonatomic,retain) NSString *name; 
@end 

fichier .m

@implementation CustomButton 

@synthesize name; 

- (void)dealloc{ 

    [name release]; 

    [super dealloc]; 
} 

@end 

Maintenant, le code où vous créez bouton

sendButton = [[CustomButton alloc] initWithFrame:CGRectMake(170, 350, 90, 30)]; 

[sendButton setTitle:@"YES!" forState:UIControlStateNormal]; 

[sendButton setName:@"John"]; 

[sendButton addTarget:self action:@selector(sendAlert forControlEvents:UIControlEventTouchUpInside]; 

[sendButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

sendButton.backgroundColor = [UIColor whiteColor]; 

[popoverView addSubview:sendButton]; 

[sendButton release]; 

maintenant dans la méthode qui vous permet de vous déclenchez pouvez y accéder en utilisant cette propriété du bouton appelé nom

+0

Hi..Thnks pour votre time..is ce une seule façon de transmettre les paramètres à la fonction – iPhonegal

1

Bien que vous pourriez sous-classe UIButton et ajouter des propriétés es, etc, il vaudra mieux que vous nommiez une variable d'instance dans la classe popoverView. La méthode sendAlert pourra alors également y accéder. Vous ne voulez pas sous-classer les contrôles à chaque fois que vous avez besoin de leur transmettre des données.

2

Sherry répond que c'est techniquement correct mais, je ne suis pas sûr si c'est une solution pour un problème de modèle de conception sous-jacent.

Votre variable 'nom' changera-t-elle? et si oui, comment est-il changé (champ, liste de sélection, etc.)? Si elle ne change pas, alors vous devriez #define si elle change (entrée utilisateur) alors votre événement devrait regarder la source de données, le champ UI ou une variable d'instance.

1

Vous n'avez pas besoin de sous-classe UIButton.

ajouter une propriété NSString à la classe de popoverView (vous suivez MVC à droite? PopoverView doit être un contrôleur). Ensuite, avant de l'ajouter à la sous-vue, affectez NSString dans votre premier objet à NSString dans votre popoverView. terminé! Vous pouvez également envisager d'utiliser des notifications si vous souhaitez utiliser ce nom à d'autres endroits de votre application.

Si on ne sait pas pour vous postez votre code entier et je fixe le code pour vous :)

+0

et si vous avez plusieurs boutons, vous devez faire cela? – user102008