好的,所以我真的不知道NSDictionary是否是正确的方法,但是我使用淡入淡出动画来在屏幕上和屏幕上显示不同的按钮组。我想把它们“划分”成不同的组,这样我就可以用一两行来完成,而不必每次都重写所有的按钮名称(有很多数量)。关于如何做到这一点的任何想法?
[UIView animateWithDuration: 1.5
animations: ^(void)
{
//As an example i just called them button1, button2, etc.
self.button1.alpha = 1;
self.button2.alpha = 1;
self.button3.alpha = 1;
self.button4.alpha = 1;
self.button5.alpha = 1;
}
];
我将以上内容作为我要问的一个例子。有没有办法将所有按钮放在NSDictionary中并写一行(按钮当前所在的位置)改变所有的alpha?
答案 0 :(得分:5)
现在,您在Interface Builder中添加的按钮的首选机制是IBOutletCollection
:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;
显然,在Interface Builder中,您可以将各个按钮连接到插座集合。有关IBOutletCollection
的讨论,请参阅NSHipster的IBAction / IBOutlet / IBOutletCollection文章。
如果您没有使用Interface Builder,而是以编程方式创建了这些按钮,那么您可以拥有NSArray
:
@property (strong, nonatomic) NSArray *buttons;
然后你自己填充:
self.buttons = @[self.button1, self.button2, self.button3, self.button4, self.button5, self.button6];
无论您如何构建此阵列(插座集合或手动填充),您都可以在更新按钮的属性时迭代该数组:
for (UIButton *button in self.buttons) {
button.alpha = 1;
}
或者,甚至更简单,您可以使用setValue:forKey:
更新所有内容:
[self.buttons setValue:@1 forKey:@"alpha"];
答案 1 :(得分:1)
您可以使用按钮标记来完成此操作。为多个按钮(您的组)设置相同的标签并执行:
button.tag = 1;
然后:
for (UIButton *btn in button) {
if(btn.tag == 1)
{
// do something
break; // don't need to run the rest of the loop
}
}