Question

J'écris un AuthenticationPlugin personnalisé qui a du contenu dynamique (actuellement sous forme d'étiquettes).J'aimerais pouvoir mettre à jour les étiquettes en réponse aux événements.

En supposant les déclarations suivantes :

  • parent = SFAuthorizationPluginView (subclass)
    • view = NSView (subclass)
      • NSTextField *label = ...

Je modifie le texte de l'étiquette comme suit (remarque :cela peut être exécuté à partir de la file d'attente de répartition en arrière-plan) :
[label setStringValue:@"new text"];

J'essaie ensuite de forcer une mise à jour en utilisant ce qui suit :

  • [label setNeedsDisplay:YES];
  • dispatch_async(dispatch_get_main_queue(), ^{ [label setNeedsDisplay:YES]; });
  • [label display];
  • dispatch_async(dispatch_get_main_queue(), ^{ [label display]; });
  • [[label cell] update];
  • dispatch_async(dispatch_get_main_queue(), ^{ [[label cell] update]; });
  • [[label cell] needsDisplay];
  • dispatch_async(dispatch_get_main_queue(), ^{ [[label cell] needsDisplay]; });
  • [view setNeedsDisplay:YES];
  • dispatch_async(dispatch_get_main_queue(), ^{ [view setNeedsDisplay:YES]; });
  • [self updateView];
  • dispatch_async(dispatch_get_main_queue(), ^{ [self updateView]; });
  • [self displayView]
  • dispatch_async(dispatch_get_main_queue(), ^{ [self displayView]; });

Cependant, j'obtiens un mélange d'absence d'action et d'écran gris scintillant (indiquant que j'ai provoqué une exception).

Des idées?(Note:Je vais modifier cette question en essayant différentes options)

Était-ce utile?

La solution

Je pense que tout ce que vous avez à faire est de mettre la mise à jour du label dans le code de la file d'attente principale comme ceci :

dispatch_async(dispatch_get_main_queue(), ^{
 label.text = "Hello World!";
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top