setNeedsDisplay pas de travail?
J'ai un problème de redessiner une vue personnalisée simple application cocoa. Le dessin est basé sur un paramètre qui est en cours de modification par un simple NSSlider. Cependant, bien que je les mettre en œuvre-setParameter: et -paramètre des méthodes et lier curseur de la valeur de ce paramètre dans interface builder, je n'arrive pas à faire un affichage personnalisé à se redessiner.
Le code ne redessinant est comme ceci:
- (void)setParameter:(int)newParameter {
parameter = newParamter;
NSLog(@"Updated parameter: %d", parameter);
[self setNeedsDisplay:YES];
}
Je FAIS passer le message sur la configuration de ce nouveau paramètre, bien que la vue ne se redessiner. Toutes les idées sont les bienvenue!
OriginalL'auteur Eimantas | 2008-11-29
Vous devez vous connecter pour publier un commentaire.
La syntaxe habituelle est:
[self setNeedsDisplay:YES]
, bien que je suppose que cela signifie la même chose. Êtes-vous à la mise en œuvre de la- (void)drawRect:(NSRect)rect
méthode, ou à l'aide de ladrawRect:
méthode de votre super-classe?si vous mettez un NSLog(@"salut") en haut de votre DrawRect: méthode, fait-il appelé?
non, il n'est pas appelée. elle est appelée qu'une seule fois au démarrage du programme
hmmm. Sur la base des informations fournies jusqu'à présent, je suis perplexe. Est-il quelque chose hors de l'ordinaire sur votre configuration?
n'est ce fil d'aide? idevgames.com/forum/archive/index.php/t-10114.html
OriginalL'auteur e.James
Pour quelqu'un qui a ce problème en utilisant un
NSOpenGLView
sous-classe, vous avez peut-être oublier d'utiliser[[self openGLContext] flushBuffer]
à la fin dedrawRect:
.OriginalL'auteur Eric
Parfois, la raison peut être très simple: le propriétaire du Fichier n'a pas de connexion à UIView objet. c'est à dire que c'est la Sortie n'est pas correctement configuré.
L'utilisation de l'IB, la touche ctrl et faites glisser la méthode 🙂
OriginalL'auteur dmi3j
Dans l'iOS 6 il n'y a pas une telle fonction à appeler:
setNeedsDisplay:YES
. J'ai eu le même problème, et est venu avec cette solution: https://stackoverflow.com/a/15027374/1280800 .Espère que ça va aider.
OriginalL'auteur dreamzor