2012-02-19 65 views
0

我在Interface Builder中添加了6個UIImageViews。 這些聲明。如何選擇名稱爲Object的UIImageView

@property(nonatomic,strong)IBOutlet UIImageView * Image1;

@property(nonatomic,strong)IBOutlet UIImageView * Image2;

@property(nonatomic,strong)IBOutlet UIImageView * Image3;

@property(nonatomic,strong)IBOutlet UIImageView * Image4;

@property(nonatomic,strong)IBOutlet UIImageView * Image5;

@property(nonatomic,strong)IBOutlet UIImageView * Image6;

那些UIImageView的名字有一個規則 - 「圖像」+數字。

我想選擇這些ImageViews dinamically。 例如,

爲(NSInteger的I = 0;我< 6;我++){

if(... condition) 
    { 
     //new 
     [[NSString stringWithFormat:@"Image%d", i+1] setHidden:YES]; //--(1) 
    } 
    else 
    { 
     [[NSString stringWithFormat:@"Image%d", i+1] setHidden:NO]; //--(2) 
    } 

} 

但是,這個代碼是不正確的。 請告訴我更多好方法。

回答

2

jonkroll建議將圖像視圖放入數組中是一種很好的方法,而且通常是最高性能。

另一種方法是使用鍵 - 值編碼(KVC)通過名稱來訪問屬性:

for (int i = 0; i < 6; ++i) { 
    NSString *key = [NSString stringWithFormat:@"Image%d", i + 1]; 
    UIImageView *imageView = (UIImageView *)[self valueForKey:key]; 
    imageView.hidden = condition; 
} 

使用視圖標籤,馬克指出,第三種辦法做到這一點。他的回答在細節上有點不足,所以我會提供一些。

您可以設置標籤在你的筆尖:

Interface Builder with tag field circled

所以,你可以設置你的Image1圖像視圖1的標記,且Image2圖像視圖2標籤,等等。

然後你可以使用viewWithTag:方法對您的頂級視圖中找到它的標籤的形象圖:

for (int i = 0; i < 6; ++i) { 
    [self.view viewWithTag:i+1].hidden = condition; 
} 
+0

非常感謝你,搶! :D – hyekyung 2012-02-19 08:07:11

+0

我喜歡第一種方式,鍵值編碼。好的Rob Rob :) – Mrunal 2012-02-19 08:37:07

1

創建一個imageViews數組,並使用快速枚舉遍歷它們:

NSArray *imageViewArray = [NSArray arrayWithObjects:self.Image1,self.Image2,self.Image3,self.Image4,self.Image5,self.Image6,nil]; 

for (UIImageView* imageView in imageViewArray) { 

    if(... condition) { 
     [imageView setHidden:YES]; //--(1) 
    } else { 
     [imageView setHidden:NO]; //--(2) 
    } 
} 
+0

謝謝你的好意! ^^ * – hyekyung 2012-02-19 08:15:12