IOS: изменить UIImageView со значением тега - PullRequest
10 голосов
/ 29 апреля 2011

У меня есть 20 UIImageView, и я хочу изменить их изображение;но я не хочу создавать 20 IBOutlet, и я хочу использовать значение тега, чтобы изменить изображение;Я устанавливаю значение тега в конструкторе интерфейса и после?Если я хочу изменить изображение в Imageview № 15?Как я могу это сделать?

Ответы [ 3 ]

17 голосов
/ 29 апреля 2011
UIImageView *imageView=(UIImageView *)[self.view viewWithTag:*givetag*];
[imageView setImage:[UIImage imageNamed:@"nameof yourimage"]];
10 голосов
/ 29 апреля 2011

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

- (UIView *)viewWithTag:(NSInteger)tag

Так что если вы вызываете этот метод в своем суперпредставлении (котороевсе UIImageViews находятся в), вы должны сделать это так:

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

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

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

2 голосов
/ 24 апреля 2015

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)")
}
...