2009-03-11 7 views
1

J'ai une feuille UIAction avec un nombre indéterminé de boutons. Je vais devoir utiliser la méthode déléguée buttonClickedAtIndex: (ou quelque chose de similaire) pour décider quelle méthode appeler quand l'utilisateur clique sur un bouton.UIActionSheet - Nombre inconnu de boutons, Comment savoir quoi appeler?

Le problème est: comment décider quel bouton est cliqué lorsque différents boutons apparaîtront sur différents index dans des situations différentes? Une solution est de regarder le titre du bouton et d'agir sur ce point - mais c'est moche, non-localisable et juste une mauvaise pratique.

Des idées?

Répondre

5

Est-ce un cas où un seul contrôleur peut afficher plusieurs feuilles, mais vous savez quels boutons apparaîtront sur chaque feuille? Si c'est le cas, vous pouvez utiliser la propriété d'étiquette de la feuille pour les différencier.

- (IBAction)showEditSheet:(id)sender { 
    UIActionSheet * sheet = [[UIActionSheet alloc] initWith...]; 
    sheet.tag = 1; 
    [sheet showInView:self.view]; 
} 
- (IBAction)showDeleteSheet:(id)sender { 
    UIActionSheet * sheet = [[UIActionSheet alloc] initWith...]; 
    sheet.tag = 2; 
    [sheet showInView:self.view]; 
} 
- (void)actionSheet:(UIActionSheet *)actionSheet 
    clickedButtonAtIndex:(NSInteger)buttonIndex { 
    switch(actionSheet.tag) { 
     case 1: 
      // This is the edit sheet 
      switch(buttonIndex) { ... } 
      break; 

     case 2: 
      // This is the delete sheet 
      switch(buttonIndex) { ... } 
      break; 

     default: 
      NSAssert(NO, @"Unknown action sheet"); 
    } 
} 
+0

Les utilisateurs d'iPhone ont eu le choix d'utiliser l'appareil photo ou la bibliothèque. iPod Touch n'a pas d'appareil photo. Au lieu de changer les boutons sur la feuille, nous avons décidé de simplement envoyer l'utilisateur ipod directement à la bibliothèque sans avoir le choix. Donc, une seule feuille avec des boutons statiques est utilisée. Problème résolu. – Jasarien

Questions connexes