2010-08-13 14 views
2

L'une de mes vues utilise trois feuilles d'action provenant de différents clics. Puisque je n'ai qu'une seule méthode - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex, quelle est la meilleure façon de savoir à quelle feuille d'action j'ai affaire? Choisir le premier bouton sur l'une de mes actionsSheets serait buttonIndex 0. Donc j'ai besoin de savoir comment savoir quel appel actionSheet vient.iPhone: gérer plusieurs feuilles d'action

Des idées?

Répondre

10

Vous devez définir la balise lorsque vous créez la feuille d'action et la tester dans votre méthode de feuille d'action.

0

Utilisez une variable de niveau classe pour 3 feuilles de calcul. Vous pouvez ensuite comparer la source d'action dans la méthode actionSheet.

1

J'ai eu le même problème et je simplement mis en place une condition basée sur le titre de la feuille d'action:

dans

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 


if (actionSheet.title == @"present action sheet A") { 

//do some stuff 

} 
if (actionSheet.title == @"present action sheet B") { 

//do some stuff 

} 

fonctionne comme un charme, pas sûr que des fiches d'action ont des étiquettes, peut-être im mal cependant.

+0

Oui, ils le font. Je pense que la méthode des tags est beaucoup plus propre. –

0

Définissez la balise lorsque vous créez une action

UIActionSheet * actionSheet = 
[[UIActionSheet alloc] 
initWithTitle:@"My title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Option1",@"Option2", nil]; 

actionSheet.tag = 1100; 





-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 

{ 

if(actionSheet.tag == 1100) 
{ 

    switch (buttonIndex) 
    { 
     case 0: 
     { 
     } 
      break; 
     case 1: 
     { 

     } 
      break; 
     default: 
      break; 
    } 
} 
}