Question

I a laissé tomber une UINavigationBar sur le formulaire XIB. Ensuite, je largué une UIButton sur la forme (pas sur le UINavigationBar). J'ai changé le type de InfoLight (de sorte qu'il ressemble à un symbole d'info).

Je puis traîné la UIButton sur le UINavigationBar et définir en tant que le bouton droit. Il change comme par magie le type de UIButton à UIButtonBarItem en raison de la traînée.

Pourquoi ne pas que je viens de glisser le UIButton sur le UINavigationBar pour commencer? Parce que, une fois que le bouton est là, Interface Builder ne vous laissera pas changer le type de InfoLight pour une raison quelconque.

Le dans le fichier .h voisin, j'ai créé une déclaration pour le IBAction

- (IBAction) btnInfoClick; 

Ensuite, dans le fichier .m, j'ai écrit la mise en œuvre:

- (IBAction) btnInfoClick {
    // kick off the about screen
    // code follows
}

Comment puis-je brancher maintenant le bouton de la barre de navigation pour ma fonction btnInfoClick?

Ou vais-je parler de la mauvaise façon de commencer?

Je dois souligner que si je simplement faire glisser un bouton de la bibliothèque directement sur la barre de navigation, je peux cliquer sur l'icône du propriétaire du fichier, puis faites glisser le IBAction btnInfoClick sur le bouton. Dans ce cas, l'événement click déclenche bien.

Toutefois, dans le scénario où je faites d'abord glisser le bouton ailleurs, puis sur la barre de navigation, l'événement ne se déclenche. Je ne sais pas ce que je fais mal.

Était-ce utile?

La solution 2

Je pense que, c'est un bogue dans IB. Mais je trouve une solution de contournement . Reposter pour la postérité:

  1. Créer un bouton dans la vue (pas la barre de navigation!)
  2. Définir ce bouton pour être Infos lumière
  3. Définissez l'action pour ce bouton pour être tactile Inside Up
  4. Déplacez le bouton dans la barre de navigation

Autres conseils

Ouvrez IB, sélectionnez le UIBarButtonItem et dans l'inspecteur, allez dans l'onglet Connexions.

Faites glisser le point à droite de sélecteur à votre AppDelegate / propriétaire du fichier (celui où l'action a été défini) et sélectionnez l'action.

Je suppose que vous avez déjà essayé, mais juste au cas où. Lorsque l'action ne se présente pas, essayez d'ajuster votre définition d'action pour être quelque chose comme:

- (IBAction)btnInfoClick:(id)sender;

et essayez à nouveau le processus. Je sais que vous n'avez pas vraiment de spécifier l'expéditeur (au moins un programme, la façon dont je l'utilise toujours) mais j'ai eu le même problème et après avoir ajouté l'expéditeur cela a fonctionné correctement param.

Bonne chance et laissez-moi savoir si cela fonctionne!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top