iOS:一次设置多个按钮的字母

iOS:一次设置多个按钮的字母,ios,objective-c,xcode,animation,nsdictionary,Ios,Objective C,Xcode,Animation,Nsdictionary,好吧,我不知道NSDictionary是否是正确的方法,但我使用淡入淡出动画在屏幕上显示不同的按钮组。我想将它们“划分”成不同的组,这样我就可以在一两行中完成这项工作,而不必每次都重写所有按钮的名称(数量很多)。有什么办法吗 [UIView animateWithDuration: 1.5 animations: ^(void) { //As an example i just called them button1, button2, e

好吧,我不知道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并写出一行(按钮当前所在的位置)来更改其所有字母?

您可以使用按钮标签来完成此操作。为多个按钮(您的组)设置相同的标记,并执行以下操作:

然后:


现在,您在Interface Builder中添加的按钮的首选机制是
IBOutletCollection

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;

显然,在Interface Builder中,您可以将各个按钮连接到outlet集合。有关
IBOutletCollection
的讨论,请参阅NSHipster的文章

如果您没有使用Interface Builder,而是通过编程方式创建了这些按钮,那么您可以使用
NSArray

@property (strong, nonatomic) NSArray *buttons;
然后您将填充自己:

self.buttons = @[self.button1, self.button2, self.button3, self.button4, self.button5, self.button6];
无论您如何构建此数组(outlet collection或手动填充),都可以在更新按钮的属性时迭代该数组:

for (UIButton *button in self.buttons) {
    button.alpha = 1;
}
或者,更简单的是,您可以使用
setValue:forKey:

[self.buttons setValue:@1 forKey:@"alpha"];

我真的不明白标签是怎么工作的。所以我把所有的按钮都设置为一个特定的标签,然后在动画中加入for循环?我注意到阿维斯马拉也发布了一个类似的答案,尽管我不清楚他为什么删除了它。我认为一个outlet集合要比标签方法好得多。答案很好,但是,如果你不使用故事板怎么办?@BenjaminJimenez-那么就拥有你自己的
NSArray
,设置为
@[self.button1,self.button2,等等]
(或者在创建按钮时添加按钮的可变数组)。请看修改后的答案。非常感谢!我第一次尝试使用for语句,但没有成功,但第二行的效果非常好!
for (UIButton *button in self.buttons) {
    button.alpha = 1;
}
[self.buttons setValue:@1 forKey:@"alpha"];