我有一个包含 10 个按钮的 View ,我想使用数组中的信息来设置可见的按钮数量及其标题。
这些按钮被命名为 option1BTN...option10BTN。该数组具有不同的数据和大小,具体取决于用户的选择,我希望按钮也能反射(reflect)这些变化。
下面的代码显示了一个 for-do 循环,它设置了哪个按钮可见以及按钮标题
for (int i=0; i == [optionsArray count]; i++) {
self.option1BTN.hidden = NO;
[self.option1BTN setTitle:[optionsArray objectAtIndex:i] forState:UIControlStateNormal];
}
如何在循环中更改按钮名称(以编程方式),以便根据数组的大小更改为 option1BTN 然后 option2BTN...optionXBTN 等等?
最佳答案
NSArray *buttons = @[self.option1BTN, self.option2BTN]; // add all the buttons here
for (int i=0; i < buttons.count; i++) {
UIButton *button = buttons[i];
button.hidden = NO;
[button setTitle:[optionsArray objectAtIndex:i] forState:UIControlStateNormal];
// the previous line can be re-written as
//[button setTitle:optionsArray[i] forState:UIControlStateNormal];
}
此方法与使用 IBOutletCollection
(正如 Jeff 在他的回答中建议的那样)之间的区别在于 outlet 集合不保证其项目的顺序。如果顺序对您很重要,您需要自己指定,就像我上面的代码片段一样。
关于ios - 以编程方式更改多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907012/