如果我有 100 个 UITextFields,
myTextfFeld1
, myTextField2
...依此类推,直到mytextField100
...并且他们都执行相同的操作,例如更改myTextField1.alpha = 0.4
为myTextField1.alpha = 1
.
与其把它写出 100 次,还有一种更有效的方法来做到这一点
我在这里查看了iOS 循环遍历对象的属性并添加操作,但它仍然意味着将所有内容添加UITextFields
到数组中。
如果我有 100 个 UITextFields,
myTextfFeld1
, myTextField2
...依此类推,直到mytextField100
...并且他们都执行相同的操作,例如更改myTextField1.alpha = 0.4
为myTextField1.alpha = 1
.
与其把它写出 100 次,还有一种更有效的方法来做到这一点
我在这里查看了iOS 循环遍历对象的属性并添加操作,但它仍然意味着将所有内容添加UITextFields
到数组中。
请不!
认真地使用数组。你不敢有 100 个实例变量命名textField1
为textField100
!
只是为了真正回答您的问题:您仍然可以这样做。同样,我强烈反对这样做,但为了完整起见,这里是代码:
for (int i = 1; i <= 100; i++) {
NSString *ivarName = [NSString stringWithFormat:@"myTextField%d", i];
UITextField *tf = [self valueForKey:ivarName];
[tf doWhateverYouWant];
}
Objective-C 中的反射很棒,不是吗?受虐时不完全。
您可以定义一个出口集合并将所有文本字段从 XIB 连接到它:
@property (nonatomic, weak) IBOutletCollection(UITextField) NSArray *textFields;
然后你可以遍历textFields
数组。
对文本字段使用循环和数组。例如
int i = 0
do textfield[i].alpha = 1
i = i+1
until i = 100