Question

J'ai une action qui commence lorsque l'utilisateur tape un bouton sur l'écran (par exemple « Importer »). En même temps, un UIToolbar apparaît au bas de l'écran qui donne à l'utilisateur la possibilité d'annuler cette action. Comment puis-je envoyer correctement un message à annuler la fonction initiale? Si l'utilisateur clique sur « Annuler » Je ne veux pas que la « Importer » pour continuer. En théorie, je pouvais le configurer comme un thread séparé (que je pourrais alors tuer), mais je ne suis pas sûr quelle est la bonne façon de le faire afin qu'il puisse nettoyer après lui-même. Quelles sont les autres stratégies pour être en mesure de « tuer » une fonction que l'utilisateur a déjà commencé?

Était-ce utile?

La solution

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]];

Cette _backgroundWorker voie sera exécutée sans thread d'interface utilisateur arrêter.

Un bouton Annuler est pressé, définissez une variable interne et vérifier sa valeur à l'intérieur _backgroundWorker.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top