Domanda

Dire per esempio ho un IBAction che è fino agganciato ad un UIButton in Interface Builder.

- (IBAction)functionToBeCalled:(id)sender
{
   // do something here   

}

Con-nel mio codice, diciamo per esempio in un altro metodo, qual è il modo migliore per chiamare che IBAction

Se provo a chiamare in questo modo, ricevo un errore:

[self functionToBeCalled:];

Ma, se provo a chiamare in questo modo (barare un po ', credo), funziona benissimo:

[self functionToBeCalled:0];

Qual è il modo corretto di chiamare correttamente?

È stato utile?

Soluzione

Il modo corretto o è:

- [self functionToBeCalled:nil] 

Per passare un mittente a zero, che indica che non è stato chiamato attraverso il quadro di consueto.

o

- [self functionToBeCalled:self]

Per passare se stessi come il mittente, che è anche corretto.

Quale di scegliere dipende da che cosa esattamente la funzione fa, e ciò che si aspetta che il mittente sia.

Altri suggerimenti

semanticamente parlando, chiamando un IBAction dovrebbe essere innescato da eventi dell'interfaccia utente solo (ad esempio un rubinetto tasto). Se è necessario eseguire lo stesso codice da più luoghi, allora è possibile estrarre il codice dal IBAction in un metodo dedicato, e chiamare quel metodo da entrambi i luoghi:

- (IBAction)onButtonTap:(id)sender {
    [self doSomething];
}

Questo ti permette di fare più logica in base al mittente (forse è possibile assegnare la stessa azione a più tasti e decidere cosa fare in base al parametro sender). E riduce anche la quantità di codice che è necessario scrivere nel IBAction (che mantiene l'implementazione del controller pulito).

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