2012-04-07 33 views
1

我正在編寫一個iOS應用程序,我有一個問題可以使閱讀更容易。將多個屬性應用於多個對象

例如,我有很多事情要隱藏,所以我這樣做: mytext1.hidden = YES; mytext2.hidden = YES; mytext3.hidden = YES; ...

有什麼辦法可以寫這個: (mytext1,mytext2,mytext3).hidden = YES;

謝謝

回答

2

可以遍歷數組,像這樣一個選擇:

[theArray makeObjectsPerformSelector:@selector(methodName)]; 

...並且有一個變體需要一個對象參數。這不會處理標量類型,雖然如此,設置隱藏= 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; 
    } 
} 
+0

太棒了!我喜歡 !謝謝 ! – 2012-04-08 06:17:22

1

不,這樣的語法在Objective-C中不存在。你會更好堅持他們都在您添加的合成屬性的數組,並通過他們像這樣的循環:

for (UITextField *textField in self.myArrayOfTextFields) { 
    [textField setHidden:YES]; 
} 
+0

@ danh的回答更詳細:) – 2012-04-08 04:58:06