2011-11-22 92 views
0

我有這樣的代碼:IOS:刪除ImageView的

for(Contact *contact in myArray){ 
     if(...){ 
      UIImageView *fix = [[UIImageView alloc] initWithImage:myImage]; 
      [self.view addSubview:fix]; 
      [fix setFrame:[contact square]]; 
      return; 
     } 
    } 

在這段代碼我在self.view添加ImageView的,但在我的應用我把這個「爲」很多次,終於我有我的self.view與4或5 imageView「修復」。 從self.view中刪除所有這些imageView的方法是什麼?

+0

return-statement將返回該方法。 – vikingosegundo

回答

3

如果你只是想刪除的UIImageView的情況下,你可以嘗試這樣的事:

for (UIView *v in self.view.subviews) { 
    if ([v isKindOfClass:[UIImageView class]]) { 
     [v removeFromSuperview]; 
    } 
} 

更新:

由於vikingosegundo在評論中寫道: ,你可以做這個instad。

如果你把每imageview的添加到一個數組,你可以從視圖以後這樣的刪除:

NSMutableArray *images = [[NSMutableArray alloc] init]; 

for Contact *contact in myArray){ 
    if(...){ 
     UIImageView *fix = [[UIImageView alloc] initWithImage:myImage]; 
     [self.view addSubview:fix]; 
     [fix setFrame:[contact square]]; 
     [images addObject:fix]; // Add the image to the array. 
     return; 
    } 
} 

的後面,從畫面中移除:

for (UIImageView *v in images) { 
    [v removeFromSuperview]; 
} 
+1

以這種方式刪除我所有的imageView,但我應該只刪除那些添加在我的「for」中的圖片;我可以使用NSMutableArray嗎? – CrazyDev

+0

您不能直接將UIImageView添加到數組,然後通過從數組中引用它們將其從self.view中移除。你需要對每個UIImageView的引用(即一個標籤)。我更新了我的答案,我希望這對你有用。 – matsr

+0

好的,謝謝....... – CrazyDev

1

只需爲每個子視圖調用removeFromSuperview。喜歡的東西:

for(UIView *subview in self.view.subviews) 
    [subview removeFromSuperview]; 
1
NSMutableArray *images = [NSMutableArray array]; 

for Contact *contact in myArray){ 
    if(...){ 
     UIImageView *fix = [[UIImageView alloc] initWithImage:myImage]; 
     [self.view addSubview:fix]; 
     [fix setFrame:[contact square]]; 
     [images addObject:fix]; 
    } 
} 


for (UIView *v in images){ 
    [v removeFromSuperview]; 
} 

另一種方法

for(UIView *v in self.view.subviews) 
    if([v isKindOfClass:[UIImageView class]]) 
     [v removeFromSuperview]; 

我把example放在一起。