Ich habe viele Threads gesehen, die mit diesem Problem zu tun haben, aber keine behandelt meinen Fall (denke ich).
Mein Fall sollte einfach sein, ich habe eine benutzerdefinierte UIView
in meinem Controller, von meinem Controller verwende ich die [ self.myView setNeedsDisplay
] und es funktioniert perfekt.
Ich habe Probleme, wenn ich versuche, dies innerhalb von UIView
selbst aufzurufen ... Ich habe eine Benachrichtigung von einer anderen Klasse gesendet und sie wird von meiner Ansicht (das funktioniert) mit den Informationen empfangen es passiert, ich aktualisiere interne Eigenschaften dieser Ansicht und dann rufe ich die [self setNeedsDisplay
] an, die meinen Bildschirm mit den neuen Zuständen aktualisieren möchte, aber nichts passiert, ich habe ein NSLOG
in meinem drawRec
verwendet Methode, und es wird nicht zu diesem Zeitpunkt aufgerufen, es wird nur aufgerufen, wenn meine Controller-Klasse setNeedsDisplay
aufrufen, und wenn das passiert, wird das Update, das zuvor geschehen sollte, auf dem Bildschirm angezeigt ... Ich weiß es nicht warum es nicht vorher aktualisiert ...
Hier ist ein Code:
Mein Controller fragt nach Update: (funktioniert OK!)
%Vor%Meine Benachrichtigungsmethode, die versucht, meine Zeichnung zu aktualisieren: (funktioniert nicht!)
%Vor% Ich gebe hier nicht mein drawRect
ein, weil es funktioniert, das Problem ist, dass es nicht von meinem UIView setNeedsDisplay
aufgerufen wird!
Jeder hat eine Idee, warum das nicht funktioniert ????
Nach vielen Tests habe ich etwas gesehen, das mit Threads zu tun hat und das fact setNeedsDisplay sollte nur in mainThread aufgerufen werden ... Außerdem habe ich in diesen Klassen nie einen separaten Thread gestartet, sondern die Klasse, die die Benachrichtigung ausgelöst hat, war in einem sekundären Thread ... und genau das verursachte das Problem ...
um es zu lösen Ich habe nur gezwungen, setNeedsDisplay im Hauptthread aufgerufen werden.
%Vor%Schnell 3:
%Vor%Ich denke, der richtige Weg, es zu benutzen, ist:
%Vor%Obwohl ich immer Probleme habe, das zu funktionieren: (
Tags und Links ios setneedsdisplay