試行錯誤中。よいプラクティスがあればコメントなどいただけると幸いです。
たとえばIB上で
(上層)
Button A
Button B
Button C
imageView A
imageView B
imageView C
(下層)
のように配置したとして、
buttonAをタップしたときにimageViewAになんらかの変化をさせたい、
ついでに他にプロパティも持たせたい、
でもクラス化はしたくない(このビューの並び順を変えたくない)ときってどうすればいいのだろう…
とりあえずの解決策として、
- (void)_buildHogeInfo { NSDictionary* hogeInfo = @{ @"mochi" : @{ @"button" : self.mochiButton, // すでにIBOutlet接続をしてある @"name" : @"もち", }, @"dango" : @{ @"button" : self.dangoButton, // すでにIBOutlet接続をしてある @"name" : @"だんご", }, }; } - (IBAction)touchDownHogeButtons:(id)sender { for (NSString* key in [self.hogeInfo allKeys]) { NSDictionary* info = [self.hogeInfo objectForKey:key]; if (!info) continue; NSArray* innerKeys = [info allKeysForObject:sender]; for (NSString* innerKey in innerKeys) { if ([innerKey isEqualToString:@"button"]) { NSLog(@"name: %@", [info objectForKey@"name"]); // ここでなんらかの処理 } } } }
こんなことしてました。うーん…