Domanda

Qual è lo scopo dell'utilizzo di IBAction e IBOutlet nella codifica Objective-C per iPhone, fa differenza se non li uso?

È stato utile?

Soluzione

IBAction e IBOutlet sono macro definite per indicare variabili e metodi a cui è possibile fare riferimento in Interface Builder.

IBAction si risolve in void e IBOutlet non risolve nulla, ma indicano a Xcode e Interface Builder che è possibile utilizzare queste variabili e metodi in Interface Builder per collegare gli elementi dell'interfaccia utente al tuo codice.

Se non utilizzerai affatto Interface Builder, non ti serviranno nel tuo codice, ma se lo utilizzerai, devi specificare IBAction per i metodi che verranno utilizzati in IB e IBOutlet per gli oggetti che verranno utilizzati in IB.

Altri suggerimenti

Il modo tradizionale di contrassegnare un metodo in modo che appaia in Interface Builder e che è possibile trascinare una connessione su di esso è stato quello di rendere il metodo di ritorno tipo IBAction. Tuttavia, se si annulla il metodo (IBAction è # definito per essere nullo) e si fornisce un argomento (id), il metodo è ancora visibile. Ciò fornisce ulteriore flessibilità, al

Tutti e 3 questi sono visibili da Interface Builder:

-(void) someMethod1:(id) sender; 
-(IBAction) someMethod2; 
-(IBAction) someMethod3:(id) sender;

Per i dettagli, consultare la Guida dell'utente di Interface Builder di Apple, in particolare la sezione intitolata Integrazione Xcode.

È necessario utilizzare IBOutlet e IBAction se si utilizza il builder di interfacce (da cui il prefisso IB) per i componenti della GUI. IBOutlet è necessario per associare le proprietà nell'applicazione ai componenti in IB e IBAction viene utilizzato per consentire ai metodi di essere associati alle azioni in IB.

Ad esempio, supponiamo di definire un pulsante e un'etichetta in IB. Per modificare dinamicamente il valore dell'etichetta premendo il pulsante, definirai un'azione e una proprietà nella tua app simili a:

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

Quindi in IB connetterai myLabel con l'etichetta e collegherai il metodo pushme con il pulsante. È necessario IBAction e IBOutlet affinché queste connessioni esistano in IB.

Interface Builder li usa per determinare quali membri e messaggi possono essere "cablati" fino ai controlli dell'interfaccia che stai usando nella tua finestra / vista.

IBOutlet e IBAction sono puramente presenti come marcatori che Interface Builder cerca quando analizza il codice in fase di progettazione, non ha alcun effetto sul codice generato dal compilatore.

Un Outlet è un collegamento dal codice all'interfaccia utente. Se si desidera mostrare o nascondere un elemento dell'interfaccia utente, se si desidera ottenere il testo di un campo di testo o abilitare o disabilitare un elemento (o un centinaio di altre cose), è necessario definire un punto vendita di quell'oggetto nelle fonti e collegarlo tramite l'oggetto interfaccia & # 8220; & # 8221; all'elemento UI. Successivamente puoi utilizzare l'outlet proprio come qualsiasi altra variabile nella tua codifica.

IBAction & # 8211; un metodo speciale attivato da oggetti dell'interfaccia utente. Interface Builder li riconosce.

@interface Controller
{
  IBOutlet id textField; // links to TextField UI object
}

- (IBAction)doAction:(id)sender; // e.g. called when button pushed

Per ulteriori informazioni, consultare Apple Docs

Sono entrato nel diagramma osservando la codifica dei valori-chiave, pensando che potesse aiutare qualcuno. Aiuta a comprendere cos'è IBOutlet.

Osservando il flusso, si potrebbe vedere che IBOutlet sono lì solo per abbinare il nome della proprietà con un nome di controllo nel file Nib.

 Come viene caricato il file pennino, screenshot del libro online di Matt per iOS6

IBAction e IBOutlet vengono utilizzati per collegare l'interfaccia creata in Interface Builder con il controller. Se non dovessi usare Interface Builder e costruire la tua interfaccia completamente in codice, potresti creare un programma senza usarli. Ma in realtà la maggior parte di noi usa Interface Builder, una volta che si desidera ottenere interattività nella propria interfaccia, è necessario utilizzare IBActions e IBoutlets.

quando usi Interface Builder, puoi usare Connections Inspector per impostare gli eventi con i gestori di eventi, i gestori di eventi dovrebbero essere le funzioni che hanno il modificatore IBAction. Una vista può essere collegata con il riferimento per lo stesso tipo e con il modificatore IBOutlet.

IBOutlet

  • È una proprietà .
  • Quando viene caricato il file pennino (IB), diventa parte dei dati incapsulati che si collegano a una variabile di istanza.
  • Ogni connessione non è archiviata e ristabilita.

IBAction

  • Attributo indica che il metodo è un'azione a cui è possibile connettersi dallo storyboard in Interface Builder.

@ - Pattern dinamico IB - Interface Builder

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