2010-08-16 4 views
1

J'ai une action qui commence lorsque l'utilisateur appuie sur un bouton sur l'écran (par exemple "Importer"). En même temps, un UIToolbar apparaît en bas de l'écran, ce qui permet à l'utilisateur d'annuler cette action. Comment puis-je envoyer correctement un message d'annulation à la fonction initiale? Si l'utilisateur clique sur "Annuler", je ne souhaite pas que "Import" continue. En théorie, je pourrais l'installer comme un fil séparé (que je pourrais ensuite tuer), mais je ne suis pas sûr de la bonne façon de le faire pour pouvoir nettoyer après lui-même. Quelles sont les autres stratégies pour pouvoir "tuer" une fonction que l'utilisateur a déjà commencé?Comment indiquer à la fonction iPhone OS d'arrêter/d'annuler?

Répondre

1

Créer une opération séparée en utilisant quelque chose comme:

NSOperationQueue* queue = [[[NSOperationQueue alloc] init] autorelease]; 
[queue addOperation: [[[NSInvocationOperation alloc] initWithTarget: self 
     selector: @selector(_backgroundWorker) 
     object: nil] autorelease]]; 

De cette façon _backgroundWorker sera exécutée sans arrêt principal thread d'interface utilisateur.

Un bouton Annuler est enfoncé, définissez une variable interne et vérifiez sa valeur dans _backgroundWorker.

Questions connexes