/ / IOS: changez UIImageView avec la valeur de la balise - objective-c, xcode, ios, balises, uiimageview

IOS: changez UIImageView avec la valeur de la balise - objective-c, xcode, ios, balises, uiimageview

J'ai 20 UIImageView et je veux changer leurimage; mais je ne veux pas créer 20 IBOutlet, et je veux utiliser la valeur de balise pour changer l’image; j’ai défini la valeur de la balise dans le générateur d’interface et après? Si je veux changer d’image à Imageview numéro 15? Comment puis-je faire?

Réponses:

10 pour la réponse № 1

Si vous utilisez des tags, vous pouvez identifier votre vue taguée (UIImageView est une sous-classe de UIView, qui possède l'attribut tag), comme ceci:

- (UIView *)viewWithTag:(NSInteger)tag

Donc si vous appelez cette méthode sur votre superview (dans lequel résident toutes les UIImageViews), vous devriez le faire comme ceci:

UIImageView *myImageView = (UIImageView *)[myAwesomeSuperview viewWithTag:15];

(Documentation J'ai trouvé en utilisant Google).

P.S: si vous pensez que l'ajout de 20 IBOutlets est un travail fastidieux, je vous recommande de créer également UIImageViews par programme. De cette façon, vous n'aurez pas besoin d'un fichier xib, écrivez un petit morceau de code et bénéficiez d'une meilleure maintenance avec moins d'effort.


17 pour la réponse № 2
UIImageView *imageView=(UIImageView *)[self.view viewWithTag:*givetag*];
[imageView setImage:[UIImage imageNamed:@"nameof yourimage"]];

2 pour la réponse № 3

SWIFT, avril 2015:

func createUIImageViews()
{
for i in 0...99
{
var imageView:UIImageView = UIImageView(frame: CGRectMake(CGFloat(0), CGFloat(0), CGFloat(100), CGFloat(100)))
imageView.userInteractionEnabled = true
imageView.tag = i
imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "onImageViewTap:"))

self.view.addSubview(imageView)
}
}



func onImageViewTap(sender:UITapGestureRecognizer)
{
println("TAP: (sender.view!.tag)")
}