J'ai un IBAction avec un code simple à l'intérieur:Dans Cocoa, pourquoi un champ de texte n'apparaîtra-t-il qu'après l'exécution complète de IBAction?
-(IBAction)change:(id)sender {
[textfield setHidden:NO];
[self dolengthyaction];
}
« textfield » est un NSTextField dans un fichier nib, et -'dolengthyaction » est une fonction qui prend environ une minute pour terminer l'exécution.
Ma question est: Pourquoi le champ de texte n'est-il pas affiché tant que l'opération "dolengthyaction" n'est pas terminée? Je veux qu'il soit révélé avant que la campagne de dolengthy commence à prendre place. Est-ce un problème inhérent ou y at-il quelque chose qui ne va pas avec mon code? (ou dans une autre partie de mon code?)
Je ne suis toujours pas très bon en programmation donc je m'excuse si j'ai mal formulé quelque chose et formulé quelque chose de mal.
EDIT: Il n'y a pas grand-chose d'autre que ce IBAction et -dolengthyaction ...
-(void)doLengthyAction {
sleep(10);
}
-(IBAction)change:(id)sender {
[textfield setHidden:NO];
[self doLengthyAction];
[textfield setHidden:YES];
}
Tout ce que je veux vraiment faire est afficher l'étiquette lorsque l'action est en cours d'exécution et de le cacher quand il est fait .
Fondamentalement, cela signifie qu'il ne s'affiche pas du tout pour le moment.
En réalité, dans -doLengthyAction ce n'est pas sleep (10) mais plutôt une opération NSFileManager qui copie environ 50 Mo de matériel. Le code était plutôt long, mais si vous voulez que je l'affiche je peux. Je l'ai testé avec sleep() mais ça ne marche pas non plus.
Je ne suis pas sûr de répondre à choisir comme « la solution », car ils ont tous l'expliquer ... – Vervious
Soit de drawonward ou de réponses de wbyoung. L'exemple de wbyoung est vraiment sympa aussi, mais ça ne marchera que sur 10.6. – JeremyP