2011-09-10 3 views
0

J'ai créé une sous-classe UIView dans la méthode drawRect dont je dessine UIImage en fonction du contenu d'un NSDictionary. Mon problème est que parfois l'ordre des images change et une image apparaît sur une autre image qui est précédemment dessinée en dessous de la première image. Mon code drawRect est donné ci-dessousOrdre des modifications de contenu pouvant être tirées dans drawRect

NSArray* arr = [myDictionary allValues]; for (MyObject* obj in arr) { NSString* imageName = obj.imageName; CGRect imageRect = CGRectZero; imageRect.origin = obj.origin; imageRect.size = obj.size;
UIImage* img = [ UIImage imageWithContentsOfFile:imageName]; [img drawInRect:imageRect]; }

Le contenu NSDictionary n'est pas réglé du tout. Chaque fois que le NSDictionary est mis à jour dans la sous-classe UIView, j'appelle simplement [self setNeedsDisplay] pour actualiser la vue. Mais je ne suis pas en mesure d'obtenir pourquoi la commande de UIImage change parfois.

Merci Arnieterm

+0

Quelqu'un peut-il ici peut aider? Je ne suis pas en mesure de comprendre pourquoi l'ordre des UIImage (s) en cours de tirage est modifié. Merci Arnieterm –

Répondre

0

Utilisation NSSortDescriptor avec un champ supplémentaire de type NSDate dans l'objet personnalisé a résolu le problème. Fondamentalement les clés de NSDictionary sont réarrangées puisqu'elles sont de type "0000", "0101", "4222" etc. La solution ci-dessus permet de garder l'ordre dans lequel le contenu est ajouté à NSDictionary sans re-arrangement whatsover les valeurs des clés sont. Merci Arnieterm

Questions connexes