2010-05-10 5 views
0

Peut-être y a-t-il une meilleure façon de configurer cela, donc je suis ouvert aux suggestions.Comment mettre à jour une vue secondaire?

Mais voici ce que je fais. J'ai un UIView principal. En plus de cela, j'ai un UIImageView et un autre UIView. Lorsque le UIImageView change, je veux changer le second UIView. J'ai donc une classe pour cela et le type de l'objet IB est mis à la classe. Dans le .m de cette classe est une méthode drawRect qui dessine des rectangles. Toujours dans le .m est une propriété NSMutableArray qui est synthétisée. J'ai créé une instance de cette classe dans le contrôleur de la vue principale. Le problème: malgré le fait que le drawRect fonctionne correctement lorsque l'application démarre (comme dans le débogueur), lorsque UIImageView change, j'appelle un "setNeedsDisplay" sur la variable d'instance de la deuxième vue après la mise à jour de la @synthesize 'd array mais le drawRect n'est pas appelé.

Je pense que cela a à voir avec les instances. Je ne pense pas que le filetage serait un problème ici. Je veux juste dessiner dans une zone séparée de l'écran basé sur une image également affichée.

+0

Je ne connais qu'un peu les threads. Je n'en ai pas créé. J'ai essayé le thread principal de setNeedsDisplayOn en vain. Je n'ai pas publié de code parce que je cherche une réponse conceptuelle par opposition à «pourquoi cette ligne de code ne fonctionne-t-elle pas?» - si j'ai du sens ... P.S. Je vais regarder quelques réponses précédentes. Je n'étais pas au courant de ce concept «d'acceptation». –

+0

ne sonne pas trop mal conceptuellement. Peut-être que vous devriez poster du code comme suggéré. – Andiih

Répondre

0

OK, pour ceux qui voient cela et ont un problème similaire ...

Il était en effet un problème « instance ». J'avais créé l'UIView secondaire dans IB. Je pense que parce que j'avais établi une connexion là-bas, le code fonctionnait bien au démarrage. Le correctif consistait à créer la sous-vue par programme et à l'ajouter à la vue principale. De cette façon, il n'y avait qu'une seule instance. La mise à jour de la variable de tableau @ synthesize'd et les appels suivants à drawRect (via setNeedsDisplay) sont allés à l'instance de la vue secondaire, celle que j'avais ajoutée en sous-vue à la vue principale. Problème résolu.