我正在编写一个iOS应用程序,我有一个问题可以让阅读变得更容易。
例如,我有很多东西需要隐藏,所以我这样做: mytext1.hidden = YES; mytext2.hidden = YES; mytext3.hidden = YES; ...
有没有办法写这个: (mytext1,mytext2,mytext3).hidden = YES;
由于
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
不,Objective-C中不存在这样的语法。你最好将它们全部放在一个数组中,你将它作为一个合成属性添加并循环遍历它们:
for (UITextField *textField in self.myArrayOfTextFields) {
[textField setHidden:YES];
}