SetNeedsDisplay funktioniert nicht

Ich habe viele Themen zu diesem Thema gesehen, aber keine befasst sich mit meinem Fall (glaube ich).

Mein Fall sollte einfach sein, ich habe einen CustomUIView In meinem Controller verwende ich von meinem Controller den Befehl [self.myView setNeedsDisplay] und es funktioniert perfekt.

Ich habe Probleme, wenn ich versuche, dies von innen zu nennenUIView selbst ... Ich habe eine Benachrichtigung, die von einer anderen Klasse gesendet wird, und sie wird von meiner Ansicht (dies funktioniert) mit den übergebenen Informationen empfangen. Ich aktualisiere die internen Eigenschaften dieser Ansicht und rufe dann die [selbst] aufsetNeedsDisplay] Damit mein Bildschirm mit den neuen Zuständen aktualisiert wird, aber nichts passiert, habe ich aNSLOG in meinemdrawRec Methode, und es wird zu diesem Zeitpunkt nicht aufgerufen, es wird nur aufgerufen, wenn meine Controller-Klasse die aufruftsetNeedsDisplay, und wenn das passiert, wird das Update, das vorher hätte passieren sollen, auf dem Bildschirm angezeigt ... Ich weiß nicht, warum es vorher nicht aktualisiert wird ...

Hier sind einige Codes:

Mein Controller fragt nach einem Update: (funktioniert OK!)

- (void)addNodeToNetwork:(DTINode *)node
{
[self.myNetwork addNodeInTheNetwork:node];
self.gridView.nodesToDraw = [self.myNetwork.nodesInNetwork copy];

CGRect tempRec = CGRectMake(node.nodePosition.x, node.nodePosition.y node.nodePosition.x, node.nodePosition.y);
NSValue *rectObj = [NSValue valueWithCGRect:tempRec]; //transforma o cgrect num objeto

[self.gridView.fatherNodes setValue:rectObj forKey:node.nodeName];
[self.gridView setNeedsDisplay];
}

Meine Benachrichtigungsmethode, die versucht, meine Zeichnung zu aktualisieren: (Funktioniert nicht!)

- (void) receiveTestNotification:(NSNotification *) notification
{
NSDictionary *userInfo = notification.userInfo;
DTINode *notificationNode = [userInfo objectForKey:@"myNode"];
NSLog(@"Im Here!");
for (DTINode *node in self.nodesToDraw)
{
    NSLog(@"Here too");

    if(node.nodeName == notificationNode.fatherNode)
    {
        CGRect temp = CGRectMake(notificationNode.nodePosition.x, notificationNode.nodePosition.y, node.nodePosition.x, node.nodePosition.y);
        NSValue *tempObj = [NSValue valueWithCGRect:temp];
        [self.fatherNodes setObject:tempObj forKey:notificationNode.nodeName];
        [self setNeedsDisplay];
        NSLog(@"Should REDRAW NOW!"); // It print this but no drawing is made!
    }
}
}

Ich klebe meine nicht eindrawRect hier, weil es funktioniert, ist das Problem, dass nicht aus meinem aufgerufen wirdUIView setNeedsDisplay!

Wer hat eine Idee, warum dies nicht funktioniert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage