1

我正在编写一个 iOS 应用程序,我有一个问题要让阅读更容易。

例如,我有很多东西要隐藏,所以我这样做:mytext1.hidden=YES; mytext2.hidden=YES;mytext3.hidden=YES;...

有什么办法可以写这个:(mytext1, mytext2, mytext3).hidden =YES;

?

谢谢

4

2 回答 2

2

您可以使用这样的选择器迭代数组:

[theArray makeObjectsPerformSelector:@selector(methodName)];

...并且有一个变体采用单个对象参数。但是,这不会处理标量类型,因此要设置 hidden=YES,您可以使用块进行枚举:

[theArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    (UITextField *)obj.hidden = YES;
}];

如果这对您的口味来说太冗长了,您可以向数组类添加方法,假设是一组控件。这些只会隐藏枚举,但调用者可以像这样简单:

[myArrayOfControls hidden:YES];

对眼睛很舒服,对吧?您可以通过创建自己的自定义 NSArray 方法类别来实现这一点:

// in Array+UIControlEnumeration.m

@implementation NSArray (UIControlEnumeration)

- (void)hidden:(BOOL)hidden {

    for (UIControl *control in self) {
        control.hidden = hidden;
    }
}
于 2012-04-08T04:52:35.523 回答
1

不,Objective-C 中不存在这样的语法。您最好将它们全部粘贴在您作为合成属性添加的数组中并像这样循环遍历它们:

for (UITextField *textField in self.myArrayOfTextFields) {
    [textField setHidden:YES];
}
于 2012-04-07T22:43:42.340 回答