試行錯誤中。よいプラクティスがあればコメントなどいただけると幸いです。
たとえばIB上で
(上層)
Button A
Button B
Button C
imageView A
imageView B
imageView C
(下層)
のように配置したとして、
buttonAをタップしたときにimageViewAになんらかの変化をさせたい、
ついでに他にプロパティも持たせたい、
でもクラス化はしたくない(このビューの並び順を変えたくない)ときってどうすればいいのだろう…
とりあえずの解決策として、
- (void)_buildHogeInfo {
NSDictionary* hogeInfo = @{
@"mochi" : @{
@"button" : self.mochiButton,
@"name" : @"もち",
},
@"dango" : @{
@"button" : self.dangoButton,
@"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"]);
}
}
}
}
こんなことしてました。うーん…