Ios 对多个对象执行相同的操作

Ios 对多个对象执行相同的操作,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,如果我有100个UITextFields mytextfeld1、myTextField2……等等,直到mytextField100 …它们都执行相同的操作,比如将myTextField1.alpha=0.4更改为myTextField1.alpha=1 有没有比写100遍更有效的方法 我在这里查看了一下,但这仍然意味着要将所有UITextFields添加到数组中。请不要 认真地说,使用数组。你敢用100个名为textField1到textField100的实例变量 只是为了真正回答你的问题:你

如果我有100个UITextFields

mytextfeld1、myTextField2……等等,直到mytextField100

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

有没有比写100遍更有效的方法

我在这里查看了一下,但这仍然意味着要将所有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中的反射非常棒,不是吗?不完全是被虐待。

请不要

认真地说,使用数组。你敢用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中的反射非常棒,不是吗?不完全是滥用。

您可以定义一个outlet集合,并从XIB将所有文本字段连接到它:

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

然后您可以在textFields数组上循环。

您可以定义一个outlet集合,并从XIB将所有textFields连接到它:

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

然后,您可以在textFields数组上循环。

对textFields使用循环和数组。 e、 g


对文本字段使用循环和数组。 e、 g



为什么不先在数组中创建它们呢?拥有100个IVAR是愚蠢的。使用NSArray或IBOutletCollection。我没有100个IVAR,只是在解释我的问题时有点夸张。同意这两条评论为什么不先在数组中创建它们?拥有100个IVAR是愚蠢的。使用NSArray或IBOutletCollection。我没有100个IVAR,只是在解释我的问题时有点夸张。同意这两个评论,我会梦想它只是一个文本示例SO@JSA986对不起,我不明白你的意思,请详细说明。我实际上没有100个名为myText1etc的实例变量。在发布我的问题时,为了简单起见,它们是假设的实例变量。他们有比这更好的命名约定;-谢谢你的回答,这正是我想要的!我会梦想它只是一个文本示例SO@JSA986对不起,我不明白你的意思,请详细说明。我实际上没有100个名为myText1etc的实例变量。在发布我的问题时,为了简单起见,它们是假设的实例变量。他们有比这更好的命名约定;-谢谢你的回答,这正是我想要的!。。。或者,您可以在NSArray上使用方法–makeObjectsPerformSelector:withObject:@holex,是的,假设该方法采用对象参数,因此无法用于设置alpha,例如是的,您完全正确,对于非对象参数,它需要稍微使用NSInvocation。这取决于海报选择的代码模式,但我认为这不是原始问题的一部分……或者,您可以使用NSArray上的方法–makeObjectsPerformSelector:withObject:。@holex,是的,假设该方法采用对象参数,因此无法用于设置alpha例如,是的,您完全正确,对于非对象参数,它需要稍微使用NSInvocation。这取决于海报选择的代码模式,但我认为这不是原始问题的一部分。问题标记为Objective-C。答案应使用相同的语言。允许吗?当然但是为了有所帮助,你的答案应该提供适合问题的可用代码。问题被标记为Objective-C。答案应该使用相同的语言。你被允许吗?当然但是为了有所帮助,您的答案应该提供适合该问题的可用代码。