Qual è il modo migliore per chiamare un IBAction da con-nel codice?
-
04-10-2019 - |
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?
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).