2009-08-27 6 views
0

MIS À JOUR Faire défiler vers le bas pour voir la question à nouveau posée plus clairement .... Si j'avais le nom d'un UIImageView particulier (IBOutlet) stocké dans une variable , comment puis-je l'utiliser pour changer l'image qui est affichée. J'ai essayé, mais ça ne marche pas.Utilisation d'une variable dans une instruction pour référencer l'image stockée dans un UIImageView

Je suis toujours nouveau à la programmation iphone, donc toute aide serait appréciée.

NSString *TmpImage = @"0.png"; 
NSString *Tst = @"si1_1_2"; 

TmpImage = @"1.png"; 
UIImage *sampleimage = [[UIImage imageNamed:TmpImage] retain]; 


((UIImageView *) (Tst)).image = sampleimage; // This is the line in question 
[sampleimage release]; 

RETRAITÉ:

J'ai un tas d'images sur l'écran .... UIImageView * s1, * s2, * s3 etc jusqu'à * s10
Supposons maintenant que je veux mettre à jour le l'image s'affiche à la même image
Plutôt que de faire
s1.image = sampleimage;
s2.image = sampleimage;
:
s10.image = sampleimage; Comment puis-je écrire une boucle for pour aller de 1 à 10 et puis utiliser la boucle var dans le cadre de la ligne qui met à jour l'image.
Quelque chose comme ça.
pour (i = 1; i < - 10; ++ i)
s (i) .image = échantillon; // Je sais que cela ne fonctionne pas


La question de base est de savoir comment intégrer la variable dans l'instruction pour accéder à l'image? Ne restez pas accroché sur mon exemple. La question principale est de savoir comment utiliser une variable dans le cadre de l'accès à un élément/objet.

Bottom Line ... Si je peux construire le nom d'un UIImageView dans un objet NSString, Comment puis-je utiliser ensuite cet objet NSString pour manipuler le UIImageView.

Merci!

+0

pourquoi lancez-vous une chaîne à une vue d'image? – Daniel

+0

Merci pour la réponse.Je ne pense pas cependant que j'ai fait un très bon travail de poser la question clairement pour obtenir ce que je recherchais. Mon intention n'était pas de projeter l'imageview en tant que pointeur de chaîne. Je vais poser une nouvelle question. –

Répondre

1

Ugh! Votre ligne en question:

((UIImageView *) (Tst)).image = sampleimage; 

est coulée d'un pointeur de chaîne comme un pointeur UIImageView - vous dites en gros que votre pointeur sur une chaîne est en fait un pointeur vers un UIImageView! Il compilera (parce que le compilateur acceptera votre assertion avec bonheur) mais va bien sûr planter en cours d'exécution.

Vous devez déclarer une variable de type UIImageView. Cela peut alors tenir n'importe quelle vue que vous voulez définir l'image de. Donc, votre code pourrait ressembler à ceci:

NSString *TmpImage = @"0.png"; 
UIImageView *myImageView; 

If (someCondition == YES) { 
    myImageView = si1_1_2; //Assuming this is the name of your UIImageView 
} else { 
    myImageView = si1_1_3; //etc 
} 

UIImage *sampleimage = [UIImage imageNamed:TmpImage]; //no need to retain it 
myImageView.image = sampleImage; 

J'espère que cela a du sens!

Modifier: Je devrais ajouter, pourquoi essayez-vous d'avoir plusieurs UIImageViews? Parce que l'image d'UIImageView peut être changée à tout moment (et peut en contenir plusieurs), ne serait-il pas préférable d'avoir simplement un UIImageView et de simplement changer l'image dedans?

Questions connexes