Bu sorunla ilgili birçok konu gördüm, ancak hiçbiri benim durumumu ele almıyor (sanırım).SetNeedsDisplay çalışmıyor
Durumum basit olmalı, denetleyicimde özel bir UIView
var, denetleyiciden [self.myView setNeedsDisplay
] kullanın ve mükemmel çalışıyor.
UIView
'un kendisinden bunu çağırmaya çalıştığımda sorun yaşıyorum ... Başka bir sınıftan gönderilmek üzere bir bildirim aldım ve bu benim Görünümüm tarafından alındı (bu çalışma) bilgilerle birlikte geçer, bu görünümün iç özelliklerini güncellerim ve ekranımı yeni durumlarla güncellemek isteyen [self setNeedsDisplay
] 'i çağırıyorum ama hiçbir şey olmuyor, benim drawRec
yöntemimin içinde kullanıyorum ve Bu zamanda denir, sadece benim denetleyici sınıfım setNeedsDisplay
aradığında ve bu olduğunda, daha önce gerçekleşmiş olması gereken güncelleme ekranda gösterildi ... denir. Neden daha önce güncellenmiyor ...
Benim denetleyicisi güncelleme için soran:İşte bazı kod vardır (! Tamam çalışır) Benim bildirim yöntemi resmimi güncellemeye çalışıyorum
- (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];
}
: (Çalışmıyor!)
- (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!
}
}
}
bunun işe yaradığını, çünkü sorun bu benim UIView setNeedsDisplay
içinden çağrılan değil mi burada benim drawRect
yapıştırarak değilim!
Bunun neden çalışmadığı konusunda herhangi bir fikri olan var mı ????
O iOS 9.3 de çalışır iOS 9.3.1 – Idan
çalışmıyor mu almak için problem rağmen. 1 benim için. Sorun, tıpkı çözümün söylediği gibi başka bir konudaydı. –