2014-06-08 56 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個圖像 所以我建議你刪除以前的圖像。

有2種方法可以這樣做:

1)你可以使用你的形象,房產,只需撥打[_imageNews removeFromSuperView];

2)你可以通過你self.scrollView的子觀點迭代,並從那裏刪除它。

+0

我有一個數組與URL和當用戶單擊「下一步」它顯示下一張圖片。類似的東西。我認爲問題在於這種方法實際上並沒有做我想做的事情。我想「銷燬」UIViewController並用其他參數重新調用它。類似於在Android中銷燬和創建碎片。有辦法做到這一點? – user3249186

+0

更好的是做我的建議或答案波紋管實際上爲你做了這基本上是相同的。 – ColdSteel