Domanda

Ho lasciato cadere un UINavigationBar nel form XIB. Poi ho lasciato cadere un UIButton sulla forma (non sul UINavigationBar). Ho cambiato il tipo da InfoLight (in modo che appaia come un simbolo Info).

Ho poi trascinato l'UIButton sul UINavigationBar e impostarlo come il tasto destro. Si cambia magicamente il tipo da UIButton a UIButtonBarItem a causa del trascinamento.

Perché non ho appena trascinato il UIButton sul UINavigationBar per cominciare? Perché, una volta che il pulsante è lì, Interface Builder non ti consente di cambiare il tipo di InfoLight per qualsiasi motivo.

Il nel file .h adiacente, ho creato una dichiarazione per il IBAction

- (IBAction) btnInfoClick; 

Poi nel file .m, ho scritto l'attuazione:

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

Come faccio ora collegare il pulsante sulla barra di navigazione per la mia funzione btnInfoClick?

O sto andando su di esso nel modo sbagliato per cominciare?

Vorrei sottolineare che, se ho semplicemente trascinare un pulsante dalla libreria direttamente sulla barra di navigazione, posso cliccare sul proprietario icona del file, e quindi trascinare il IBAction btnInfoClick sul pulsante. In questo caso, l'evento click spara bene.

Tuttavia, nello scenario in cui ho trascinare il pulsante altrove e poi sulla barra di navigazione, l'evento non si attiva mai. Non so cosa sto facendo male.

È stato utile?

Soluzione 2

Credo, è un bug in IB. Ma ho trovato una soluzione qui . Reinserire per i posteri:

  1. Creare un pulsante nella vista (non la barra di navigazione!)
  2. Imposta questo pulsante per essere Info Light
  3. Imposta l'azione per questo pulsante per essere tocco All'interno Up
  4. Spostare il pulsante alla barra di navigazione

Altri suggerimenti

Aprire IB, selezionare l'UIBarButtonItem e in Impostazioni, vai alla scheda Connessioni.

Trascinate dal punto alla destra del di selezione al AppDelegate / proprietario del file (quello in cui è stata definita l'azione) e selezionare l'azione.

Immagino che tu hai già provato, ma per ogni evenienza. Quando l'azione non si presenta, prova a modificare la definizione dell'azione essere qualcosa di simile:

- (IBAction)btnInfoClick:(id)sender;

e riprovare il processo. So che non si hanno veramente a specificare il mittente (almeno a livello di codice, il modo in cui io uso sempre), ma ho avuto lo stesso problema e dopo aver aggiunto il parametro mittente ha funzionato correttamente.

Buona fortuna e fatemi sapere se questo funziona!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top