ios - 以编程方式更改多个按钮

标签 ios objective-c

我有一个包含 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/

相关文章:

ios - 从 iOS 中的浮点值手动定位

ios - Swift - 来自 URL 的 UILabel

iphone - 如何向 UIImageView 子类添加 "viewDidLoad"类方法?

objective-c - 如何添加自定义键盘

ios - IOS中Json值转化为NSArray解析

ios - 使用变量时NSString中的“Expression myExpression未使用”

objective-c - 如何理解 XCode 4 上的崩溃日志

objective-c - 如何调整 UIPageViewController 的横向大小

ios - 无法停止覆盖推送 View 的导航栏 - 为什么会这样?

ios - Facebook iOS SDK,授权后黑屏