2010-09-12 6 views
1

I ont un UIActionSheet commun qui me sert à travers 10 différents contrôleurs/Affichage. Je me demande s'il est possible d'utiliser UIActionSheet du délégué de l'application afin d'empêcher la duplication de code? Jusqu'ici mes tentatives d'utilisation d'une feuille d'action du délégué n'ont pas fonctionné, je suspecte mon problème d'appeler la méthode showInView - ai-je besoin d'instancier un objet de mon contrôleur de vue puis d'utiliser viewController.view ici? Si oui, comment puis-je dire quelle vue appelée méthode de la feuille d'action du délégué?Possibilité d'utiliser UIActionSheet à partir du délégué d'application?

Répondre

0

je le même problème, et moi avons récemment trouvé un moyen de le réparer dans mon application. La clé pour moi était de faire en sorte que mon application délègue la classe à une extension de UIViewController plutôt qu'à NSObject. (. Je pense que UIViewController est une sous-classe de NSObject de toute façon, cela ne devrait pas affecter votre application trop)

En d'autres termes, changer la ligne principale de mise en œuvre dans votre fichier d'interface délégué de l'application de quelque chose comme ceci:

@interface YourAppDelegate : NSObject <UIApplicationDelegate, UIActionSheetDelegate> { 

à ceci:

@interface YourAppDelegate : UIViewController <UIApplicationDelegate, UIActionSheetDelegate> { 

Vous devriez maintenant être en mesure d'utiliser la showInView: méthode avec votre feuille d'action dans votre mise en œuvre du délégué de l'application:

[yourActionSheet showInView:self.view]; 
2

Je ne cherchais pas l'approche proposée par c_phlat, mais je me demande ce que self.view est mis en correspondance. J'ai réussi à le faire comme ceci:

[actionSheet showInView:window]; 

cela fonctionne tout aussi bien.

Questions connexes