2010-09-09 5 views
0

Je crée un UIImage par programmation dans la fonction drawRect de mon UIView. Existe-t-il un moyen pour que le UIViewController responsable de cet UIView accède à cette image (ou à une copie de celle-ci) pour la manipuler?UIImage de UIView à UIViewController

Appréciez les pointeurs et merci d'avance.

Répondre

1

Si votre UIImage que vous créez par programmation dans votre drawrect est stocké en tant que propriété dans la sous-classe UIView, UIViewController peut accéder à l'image. De toute évidence, si vous utilisez Interface Builder, vous devez connecter votre sous-classe UIView à un IBOutlet de la classe UIViewController pour accéder à la propriété, mais je suis sûr que vous le faites déjà.

e.g. in the drawrect function 

self.storedImage = [[UIImage alloc] init... ]; 

in the header for the UIView subclass 
UIImage* storedImage; 

@property (nonatomic, retain) UIImage* storedImage; 

La propriété retenue nonatomic assure que vous n'êtes pas une fuite UIImages chaque fois que la fonction rect tirage est appelé.

+1

Dans votre exemple, vous introduisez une fuite de mémoire avec la ligne ... self.storedImage = [[UIImage alloc] init ...]; Comme storedImage est une propriété retain. Au lieu de cela, vous devriez avoir ... UIImage * newImage = [[UIImage alloc] init ...]; self.storedImage = newImage; [nouvelle version d'image]; OU ... self.storedImage = [[[[UIImage alloc] init ...] autorelease]; Vous seriez surpris combien de fois je vois ça! :) –