2010-09-15 2 views
4

J'essaye de raccorder un UIButton à un IBAction dans le constructeur d'interface mais IB ne montrera pas la méthode que j'ai définie comme une option pour l'accrocher.Interface Builder ne verra pas les méthodes d'action

- (IBAction)someAction:(id)sender; 

C'est ce que je dans le fichier h, puis dans le fichier M je

- (IBAction)someAction:(id)sender{ 
NSLog(@"Button Tapped."); } 

Le document IB est relié à cette classe je sais parce que cette classe a aussi un UIPicker, et cela se connecte bien.

Toute aide serait génial à ce sujet,

Merci, Callaghan001.

+0

Avez-vous enregistré votre fichier d'en-tête? – Satyam

Répondre

3

Assurez-vous que vous êtes réellement en train de câbler le manipulateur pour l'événement du bouton (touchez probablement à l'intérieur) et non le bouton lui-même. Ainsi, au lieu de cliquer directement sur le bouton, cliquez sur le bouton pour voir ses connexions et faites glisser son objet de retouche vers la cible, ou cliquez sur la cible tout en maintenant la touche Ctrl enfoncée. Si l'action n'apparaît pas sur la cible dans ces cas, et que vous êtes sûr que l'outil de création d'interface sait de quelle classe il s'agit, alors je suis déconcerté.

+0

Non J'utilise l'option de retouche à l'intérieur et elle n'apparaît toujours pas. C'est vraiment agaçant. J'ai vu ceci avant une fois après que j'ai mis à jour xcode la dernière fois et finalement il a juste commencé à fonctionner encore sans raison, mais c'est juste frustrant. – Callaghan001

+0

alors je suis déconcerté. à part les «solutions» évidentes, comme le redémarrage de xcode/interface builder, que je suppose que vous avez déjà essayé. – zem

+1

Juste essayé un redémarrage et effacé la PRAM de la machine et finalement il travaille maintenant sans aucun changement au code. L'esprit boggle quant à pourquoi il ne fonctionnait pas en premier lieu. – Callaghan001

-2

Je pense que votre mise en œuvre doit être

- (void)someAction:(id)sender 
{ 
    NSLog(@"Button Tapped."); 
} 
+0

Non IBAction fonctionnera aussi, je l'ai corrigé avec w reset de la PRAM, je garderai un œil dessus, j'espère que ça ne se passera pas. – Callaghan001

4

je fixe ce problème en lisant dans le fichier de classe manuellement à partir Interface Builder. Faites simplement Fichier -> Lire la classe -> trouvez le fichier .h que vous avez défini dans IBAction. -> ouvert! Le constructeur de l'interface dira quelque chose comme "un fichier classe analysé"

+0

Cela peut également révéler des messages d'erreur IB, ce qui peut être utile dans la recherche d'autres cas où IB est confus. –

1

même problème, en lisant le fichier de classe ne le corrigeait pas mais en changeant le nom de la classe dans l'inspecteur d'identité du contrôleur de UIViewController au nom correct de la sous-classe.

1

essayez d'ajouter -(IBAction)testFunction:(id)sender; dans le fichier .h.

Cela a fonctionné pour moi.

1

J'ai rencontré ce problème et le redémarrage de Xcode ne l'a pas résolu.

Ce qui a résolu le problème pour moi était:

  1. Sélectionnez File Owner
  2. Aller à Identity Inspector (sous Utilities, panneau latéral de droite).
  3. Sous la section Custom Class, sélectionnez simplement le champ de texte (où votre nom de sous-classe UIViewController personnalisé doit être affiché) et appuyez sur "Entrée".
Questions connexes