2014-07-22 4 views
-2

Je suis en train d'implémenter un IBAction mais je vois un message d'avertissement d'un identificateur non déclaré et je ne sais pas comment l'enlever.Identificateur non déclaré customActionSheet

Voici mon code:

- (IBAction)showGCOptions:(id)sender { 

     [_customActionSheet showInView:self.view 
     withCompletionHandler:^(NSString *buttonTitle, NSInteger buttonIndex) { 

      if ([buttonTitle isEqualToString:@"View Leaderboard"]) { 
       [self showLeaderboardAndAchievements:YES]; 
      } 
      else if ([buttonTitle isEqualToString:@"View Achievements"]) { 
       [self showLeaderboardAndAchievements:NO]; 
      } 
      else{ 

      } 
     }]; 

    } 

Sur la deuxième ligne où il est dit _customActionSheet Je vois d'avertissement au sujet d'un

identificateur non déclaré _customActionSheet

S'il vous plaît aider comment y remédier . Merci merci

+0

si u déclarent _customactionsheet? –

+0

Non je ne l'ai pas déclaré J'ai besoin d'aide pour déclarer des identifiants Je suis nouveau sur xcode et je suis un tutoriel pour implémenter Game Center. – user3820375

+0

Vous n'avez pas déclaré '_customActionSheet' et vous demandez pourquoi vous l'obtenez et comment le réparer? Comment pouvons-nous savoir ce qu'est 'customActionSheet'? Est-ce une instance de 'UIActionSheet' ou s'agit-il d'une feuille d'action personnalisée tierce? Cette question manque de beaucoup d'informations pour que nous puissions vous aider. Nous pouvons seulement fournir des réponses basées sur des suppositions, ce qui n'est pas le sujet de stackoverflow. -1 et vote pour fermer. – Popeye

Répondre

0

Vous pouvez déclarer soit dans le fichier d'en-tête:

@interface YourClass : UIViewController { 
    UIActionSheet *_customActionSheet; 
} 
... 
@end 

ou à titre privé dans le fichier de mise en œuvre en utilisant une catégorie privée:

@interface YourClass() { 
    UIActionSheet *_customActionSheet; 
} 
@end 
@implementation YourClass 
... 
@end 

je serais favorable ce dernier.

Maintenant, un mot sur le code que vous avez publié; il utilise les titres des boutons pour identifier le choix fait par l'utilisateur et c'est une mauvaise idée car cela entravera l'internationalisation de votre application, où les boutons auront un texte différent. Utilisez plutôt le buttonIndex:

[_customActionSheet showInView:self.view 
     withCompletionHandler:^(NSString *buttonTitle, NSInteger buttonIndex) { 
      [self showLeaderboardAndAchievements:buttonIndex == 0]; 
     }]; 
+0

Yess J'ai essayé de déclarer et j'ai aussi utilisé la méthode que vous avez spécifiée ci-dessus mais elle donne toujours une erreur en disant "Aucune interface @ visible pour 'UIActionSheet' déclare le sélecteur 'showInView: withCompletionHandler.' Je suis coincé ... – user3820375

-1

C'est d'initialiser UIActionSheet

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"title 1",@"title 2", nil]; 
[actionSheet showInView:self.view] 
0

Question1 identificateur non déclaré _customActionSheet

compilateur dit Vous utilisez _customActionSheet dans une méthode, mais je n » t trouver une déclaration sur la portée locale/globale.

Question2 Aucune interface @ visible pour 'UIActionSheet' ne déclare le sélecteur 'showInView: withCompletionHandler.

compilateur dit Tout d'abord je ne sais pas qui _customActionSheet, alors où puis-je trouver cette méthode pour exécuter le it''showInView: withCompletionHandler'.Common déclarer le type d'objet customActionSheet puis spécifiez la déclaration de méthode sur le fichier .h. Alors seulement je connaissais cette méthode. sinon je vais lever les avertissements.

Solution

Dans YourViewController.m #import "CustomActionSheet.h"

Dans YourViewController.h

@class CustomActionSheet 
    @interface YourViewController : UIViewControl... 

Deuxième En YourViewController.m haut

@interface YourViewController() 

    @property (nonatomic, strong) CustomActionSheet *customActionSheet; 

    @end 

    @implementation YourViewController 

    ..Here goes your implementation 
    @end 

Check this out tutorial

+0

Merci pour votre réponse, mais cela ne résout pas le problème l'erreur est toujours là et en plus de cette erreur vient une autre erreur disant "Type de propriété 'customActionSheet' ne correspond pas au type de variable d'instance '_customActionSheet '(UIActionSheet * _strong') – user3820375

Questions connexes