2014-06-08 2 views
0

사용자가 단추를 누를 때 UIScrollView가 포함 된 내 ViewController에서이 메서드를 호출합니다.UIImageView를 올바르게 업데이트 할 수 없습니다.

-(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; 하지만 작동하지 않았다.

답변

1

먼저 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]; 
} 
+0

감사! 그것은 작동합니다! – user3249186

0

글쎄, 당신의 응용 프로그램이 무엇을하는지 잘 모르겠다. 그러나 나는 단지 이전 이미지를 지울 것을 제안 할 것이므로 이미지 만 필요하다.

1) 속성으로 이미지를 사용할 수 있습니다 단순히 [_imageNews removeFromSuperView];

2) 호출 당신이 당신의 self.scrollView의 하위 뷰를 통해 반복 할 수 거기에서 제거 :

그렇게 할 2 가지 방법이 있습니다 .

+0

URL이있는 배열이 있으며 사용자가 "다음"을 클릭하면 다음 그림이 표시됩니다. 그런 것. 문제는이 방법이 실제로 내가 원하는 것을하지 않는다는 것입니다. UIViewController를 "파괴"하고 다른 매개 변수로 다시 호출하려고합니다. 안드로이드에서 파편을 파괴하고 창조하는 것. 그렇게 할 수있는 방법이 있습니까? – user3249186

+0

더 나은 것은 단지 내가 제안한 것을하거나 그 대답이 실제로 당신을 위해 한 것이지 기본적으로 동일합니다. – ColdSteel

관련 문제