Я вызываю этот метод в своем ViewController, который содержит UIScrollView, когда пользователь нажимает кнопку.

-(void) updateView:(NSURL *) urlPicture{
      UIImageView *imageNews = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,300,200)];
    imageNews.contentMode = UIViewContentModeScaleAspectFit;
    [imageNews setImageWithURL:urlPicture];
    [self.scrollView addSubview:imageNews];
}

Вроде нормально работает, но когда у меня странное поведение. Предыдущее изображение не очищается для установки нового. Например: если первое изображение имеет размер 300x200, а второе - 200x200, я все равно могу видеть стороны первого, когда приложение загружает второе.

Я хотел бы знать, как очистить предыдущее изображение перед загрузкой второго. Я уже пробую imageNews.image = nil; но это не сработало

0
user3249186 8 Июн 2014 в 21:26

2 ответа

Лучший ответ

Сначала вам нужно удалить старый вид из scrollView. Вы можете отредактировать свой код, как указано ниже

#define IMAGE_VIEW_TAG     1001
-(void) updateView:(NSURL *) urlPicture{
    UIView *oldView = [self.scrollView viewWithTag:IMAGE_VIEW_TAG];
    if(oldView)
        [oldView removeFromSuperView]
    UIImageView *imageNews = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,300,200)];
    imageNews.tag = IMAGE_VIEW_TAG;
    imageNews.contentMode = UIViewContentModeScaleAspectFit;
    [imageNews setImageWithURL:urlPicture];
    [self.scrollView addSubview:imageNews];
}
1
kkumpavat 8 Июн 2014 в 21:39

Я не совсем уверен, что делает ваше приложение, но похоже, что вам нужно иметь только одно изображение, поэтому я бы посоветовал вам удалить предыдущее изображение.

Это можно сделать двумя способами:

1) вы можете использовать свое изображение как собственность и просто позвонить [_imageNews removeFromSuperView];

2) вы можете перебирать подвиды self.scrollView и удалять их оттуда.

0
Coldsteel48 8 Июн 2014 в 21:34
У меня есть массив с URL-адресами, и когда пользователь нажимает «Далее», он показывает следующее изображение. Что-то вроде того. Я думаю, проблема в том, что этот метод на самом деле не делает то, что я хочу. Я хочу «уничтожить» UIViewController и снова вызвать его с другими параметрами. Что-то вроде уничтожения и создания фрагментов в Android. Есть способ сделать это?
 – 
user3249186
8 Июн 2014 в 21:41
Лучше просто сделайте то, что я предложил, или ответ ниже действительно сделал это для вас, что в основном то же самое.
 – 
Coldsteel48
8 Июн 2014 в 21:42