2012-02-19 6 views
0

Interface Builderで6つのUIImageViewsを追加しました。 これが宣言されています。 IBOutlet UIImageView *画像1オブジェクトの名前でUIImageViewを選択する方法

@property(非アトミック、強いです)。

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

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

@property(非原子性、強い)IBOutlet UIImageView * Image4;

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

@property(非原子性、強い)IBOutlet UIImageView * Image6;

これらのUIImageViewの名前には、ルール "画像" +番号があります。

これらのImageViewを動的に選択したいと考えています。例えば 、(NSInteger I = 0; I < 6; iが++)のため

{

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

} 

しかし、このコードは正しくありません。 もっと良い方法を教えてください。

答えて

2

jonkrollが画像ビューを配列に配置することは、それを行うには良い方法であり、一般に最高のパフォーマンスです。マークが示唆するように、それを行うための第三の方法はある、

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

viewタグの使用:

もう一つの方法は、名前であなたのプロパティにアクセスするには、キー値コーディング(KVC)を使用することです。彼の答えは細部については少し短いので、私はいくつかを提供します。

あなたのペン先でタグを設定することができます。

Interface Builder with tag field circled

ですからように2にごImage1画像1を視野に、そしてあなたのImage2画像ビューのタグのタグを設定し、することができます。

次に、あなたのトップレベルのビューにviewWithTag:方法を使用して、そのタグで画像表示を見つけることができます。

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

ありがとう、強盗! :D – hyekyung

+0

私は最初の方法、キーバリューコーディングが好きです。良い人ロブ:) – Mrunal

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

関連する問題