それはおそらく良い働き方ではありません。必要なのは、imageViews の配列です。次に、数値インデックスが必要なだけで、選択したインデックスを持たないものをすべて非表示にして、imageViews の配列を調べることができます。
しかし、imageView の配列を取得するにはどうすればよいでしょうか。オブジェクトの配列から IBOutlets を作成する方法を参照してください。 IBOutletCollection の使い方を説明します。
ビューごとに個別のボタンがある場合は、それらも IBOutletCollection に入れます。そうすれば、次のようなものを持つことができます:
- (IBAction) imageButtonPressed:(id) sender;
{
// The sender is the button that was just pressed.
NSUInteger chosenIndex = [[self imageButtons] objectAtIndex:sender];
for (NSUInteger imageIndex = 0; imageIndex < [[self imageViews] count]; imageIndex++)
{
// Hide all views other than the one associated with the pressed button.
if (imageIndex != chosenIndex)
{
[[[self imageViews] objectAtIndex:imageIndex] setHidden:YES];
}
else
{
[[[self imageViews] objectAtIndex:imageIndex] setHidden:NO];
}
}
}
文字列image1
を実際に imageViewに関連付ける必要がある場合はNSDictionary
、後で検索できるように、コントロールを一意の文字列識別子に関連付ける を作成できます。NSDictionary は強力ですが、これが必要な理由については空白を描いています。
NSMutableDictionary *viewLookup;
[viewLookup setObject:[[self imageViews] objectAtIndex:0] forKey:@"image0"];
[viewLookup setObject:[[self imageViews] objectAtIndex:1] forKey:@"image1"];
[viewLookup setObject:[[self imageViews] objectAtIndex:2] forKey:@"image2"];
[viewLookup setObject:[[self imageButtons] objectAtIndex:0] forKey:@"button0"];
// ...
// Can now look up views by name.
// ...
NSString *viewName = @"image1";
UIView *viewFound = [viewLookup objectForKey:viewName];
[viewFound doSomething];