J'ai 20 UIImageView et je veux changer leur image ; mais je ne veux pas créer 20 IBOutlet, et je veux utiliser la valeur du tag pour changer l'image ; je définis la valeur du tag dans le constructeur d'interface et après ? Si je veux changer l'image de l'Imageview numéro 15 ? Comment faire ?
Réponses
Trop de publicités?Si vous utilisez des balises, vous pouvez identifier votre vue balisée (UIImageView est une sous-classe de UIView, qui possède l'attribut tag) comme suit :
- (UIView *)viewWithTag:(NSInteger)tag
Ainsi, si vous appelez cette méthode sur votre vue principale (dans laquelle résident tous les UIImageViews), vous devez procéder de la manière suivante :
UIImageView *myImageView = (UIImageView *)[myAwesomeSuperview viewWithTag:15];
( Documentation Je l'ai trouvé en utilisant Google).
P.S : si vous pensez que c'est trop de travail d'ajouter 20 IBOutlets, je vous recommande de créer les UIImageViews par programme également. De cette façon, vous n'aurez pas besoin d'un fichier xib, vous écrirez un petit bout de code et vous aurez une meilleure maintenance avec moins d'efforts.
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)")
}