IOS: измените UIImageView на значение тега

#objective-c #xcode #ios #tags #uiimageview

#objective-c #xcode #iOS #Теги #uiimageview

Вопрос:

У меня 20 UIImageView, и я хочу изменить их изображение; но я не хочу создавать 20 IBOutlet, и я хочу использовать значение тега для изменения изображения; Я устанавливаю значение тега в interface builder и после? Хочу ли я изменить изображение под номером Imageview 15? Как я могу сделать?

Ответ №1:

 UIImageView *imageView=(UIImageView *)[self.view viewWithTag:*givetag*];
[imageView setImage:[UIImage imageNamed:@"nameof yourimage"]];
  

Ответ №2:

Если вы используете теги, вы можете идентифицировать свой помеченный вид (UIImageView является подклассом UIView, который имеет атрибут tag) следующим образом:

 - (UIView *)viewWithTag:(NSInteger)tag
  

Итак, если вы вызываете этот метод в своем superview (в котором находятся все UIImageViews), вы должны сделать это следующим образом:

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

(Документацию я нашел с помощью Google).

P.S: если вы считаете, что добавление 20 IBOutlets требует слишком много работы, я рекомендую вам также создать UIImageViews программно. Таким образом, вам вообще не понадобится файл xib, напишите небольшой фрагмент кода и получите лучшее обслуживание с меньшими усилиями.

Комментарии:

1. Возможно, вам захочется ввести его приведение, поскольку viewWithTag возвращает UIView.. UIImageView myImageView = (UIImageView ) [myAwesomeSuperview Просмотр с тегом: 15];

Ответ №3:

SWIFT, апрель 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)")
}