2010-11-20 17 views
0

Je possède ce « observateur » qui regarde le UISwitch pour un changement de valeur:Passe 2 objets à l'aide d'une méthode - iPhone SDK

[cell.switcher addTarget:self action:@selector(switched:withName:) forControlEvents:UIControlEventValueChanged]; 

Lorsque la valeur est modifiée cette méthode est appelée:

-(void)switched:(UISwitch *)switcher withName:(NSString *)name; 

Comme vous pouvez le voir, j'ai deux objets que je dois passer avec le premier code. Comment envoyer l'objet d'un nsstring et d'un uiswitch via la méthode addTarget: action: forControlEvents pour pouvoir y accéder dans le sélecteur commuté: withname?

Merci,

Kevin

EDIT: Je ne suis pas très bon avec obj-c et n'a pas vraiment appris les termes correctement, donc si je fait une erreur s'il vous plaît laissez-moi savoir!

Répondre

3

La meilleure façon de s'y prendre est d'étiqueter vos objets UISwitch:

uiSwitch1.tag = 0; 
uiSwitch2.tag = 1; 
... 

ensuite sur votre méthode switched: vous pouvez tester l'étiquette de l'expéditeur et définir votre chaîne il:

-(void)switch:(id)sender { 
    switch ([sender tag]) { 
     case 0: 
     // set the string for uiSwitch1 
     case 1: 
     // set the string for uiSwitch2 
     ... 
    } 
} 
1

Vous ne pouvez pas. Le sélecteur pour les actions UIControl ne fera que renvoyer l'expéditeur (dans ce cas, votre cell.switcher). Vous devriez trouver un moyen d'identifier la chaîne dont vous avez besoin en fonction de l'action et de l'identifiant de l'expéditeur.