2010-09-10 10 views
0

J'ai trois variables UIImageView appelées myPicture1, myPicture2 et myPicture3. Dans une boucle for j'essaye d'augmenter le nombre à la fin de myPicture par 1 de sorte que je puisse assigner une image aléatoire à chacune des trois variables. Voici le code ci-dessous:Augmenter le nombre de parties de la variable UIImageView dans une boucle for?

for (i=0; i<3; i++) { 

int g = arc4random() % 19; 

NSString *imagename = [NSString stringWithFormat:@"image%d.jpg",g]; 

UIImage *picture = [UIImage imageNamed:imagename]; 

UIImageView imageView = [[UIImageView alloc] initWithImage : picture]; 

self.myPicture1 = imageView; **This is where I want myPicture to increase to myPicture 2 and then 3 ** 

} 

Est-ce possible?

Merci à tous,

Martin

+0

Non que vous une fuite de 'imageView' si vous avoir des propriétés 'retain' ou' copy'. Vous devriez le 'libérer' après avoir appelé le setter de propriété. –

Répondre

1
bien

, je pense que vous vous approchez de cette façon un peu maladroite.
probablement la meilleure façon de faire est d'avoir votre UIImageView s stockés dans un NSArray. Donc, dans votre déclaration de classe, au lieu de

@property (nonatomic, retain) UIImageView *myPicture1; 
@property (nonatomic, retain) UIImageView *myPicture2; 
@property (nonatomic, retain) UIImageView *myPicture3; 

vous auriez

@property (nonatomic, retain) NSArray *myPictures; 

Et vous les créer comme ceci:

NSMutableArray *myTempArray = [NSMutableArray arrayWithCapacity:3]; 
for (i=0; i<3; i++) 
{ 
    int g = arc4random() % 19; 

    NSString *imagename = [NSString stringWithFormat:@"image%d.jpg",g]; 
    UIImage *picture = [UIImage imageNamed:imagename]; 

    UIImageView imageView = [[UIImageView alloc] initWithImage : picture]; 
    [myTempArray addObject: imageView]; 
    [imageView release]; 
} 
self.myPictures = [NSArray arrayWithArray: myTempArray]; 
+0

Il est préférable d'utiliser ['copy'] (http://developer.apple.com/library/ios/documentation/cocoa/conceptual/objectivec/Articles/ocProperties.html#//apple_ref/doc/uid/TP30001163- CH17-SW32) pour la propriété comme 'NSArray' est dans un cluster de classe mutable/immutable. Ensuite, vous pouvez simplement dire 'self.myPictures = myTempArray;'. De plus 'imageView' a été divulgué, il doit être libéré après l'avoir ajouté au tableau. –

+0

Brillant - merci beaucoup Filipe. – GuybrushThreepwood