SetNeedsDisplay не работает
Я видел много тем, связанных с этой проблемой, но ни одна не касается моего случая (я думаю).
Мой случай должен быть простым, у меня есть CustomUIView
в моем контроллере, из моего контроллера, я использую [self.myView setNeedsDisplay
] и это прекрасно работает.
У меня возникают проблемы, когда я пытаюсь вызвать это изнутриUIView
сам ... У меня есть уведомление, отправленное из другого класса, и оно получено моим представлением (это работает) с информацией, которую он передает, я обновляю внутренние свойства этого представления и затем я 'Я называю себяsetNeedsDisplay
] желая обновить мой экран новыми состояниями, но ничего не происходит, я использовалNSLOG
внутри моегоdrawRec
метод, и он не вызывается в это время, он вызывается только когда мой класс контроллера вызываетsetNeedsDisplay
и когда это произойдет, обновление, которое должно было произойти до того, будет показано на экране ... Я нене знаю, почему его не обновляют раньше ...
Вот некоторый код:
Мой контроллер запрашивает обновление: (работает нормально!)
- (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];
}
Мой метод уведомления пытается обновить мой рисунок: (Не работает!) Я '
- (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!
}
}
}
я не вставляю своиdrawRect
здесь, потому что это работает, проблема в том, что это не вызывается изнутри моего!UIView setNeedsDisplay
Кто-нибудь есть идеи, почему это не работает?