对许多对象执行相同的操作

时间:2013-06-23 18:19:47

标签: ios objective-c cocoa-touch

如果我有100个UITextFields,

myTextfFeld1myTextField2 ...依此类推,直到mytextField100

...他们都执行相同的操作,比如将myTextField1.alpha = 0.4更改为myTextField1.alpha = 1

而不是将其写出100次是否有更有效的方法来做到这一点

我在这里查看iOS looping over an object's properties and adding actions,但仍然意味着将所有UITextFields添加到数组中。

3 个答案:

答案 0 :(得分:6)

请,不!

Like this.

认真使用数组。 您是否敢将textField1名称为textField100的100个实例变量!


只是为了实际回答您的问题:您仍然可以执行此操作。同样,我强烈反对这样做,但为了完整起见,这里是代码:

for (int i = 1; i <= 100; i++) {
    NSString *ivarName = [NSString stringWithFormat:@"myTextField%d", i];
    UITextField *tf = [self valueForKey:ivarName];
    [tf doWhateverYouWant];
}

Objective-C中的反思很棒,不是吗?被滥用时并不完全。

答案 1 :(得分:1)

您可以定义插座集合并将所有文本字段从XIB连接到它:

 @property (nonatomic, weak) IBOutletCollection(UITextField) NSArray *textFields;

然后你可以遍历textFields数组。

答案 2 :(得分:-2)

为文本字段使用循环和数组。 e.g。

int i = 0
do textfield[i].alpha = 1
i = i+1
until i = 100