我正在編寫一個iOS應用程序,我有一個問題可以使閱讀更容易。將多個屬性應用於多個對象
例如,我有很多事情要隱藏,所以我這樣做: mytext1.hidden = YES; mytext2.hidden = YES; mytext3.hidden = YES; ...
有什麼辦法可以寫這個: (mytext1,mytext2,mytext3).hidden = YES;
?
謝謝
我正在編寫一個iOS應用程序,我有一個問題可以使閱讀更容易。將多個屬性應用於多個對象
例如,我有很多事情要隱藏,所以我這樣做: mytext1.hidden = YES; mytext2.hidden = YES; mytext3.hidden = YES; ...
有什麼辦法可以寫這個: (mytext1,mytext2,mytext3).hidden = YES;
?
謝謝
可以遍歷數組,像這樣一個選擇:
[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;
}
}
不,這樣的語法在Objective-C中不存在。你會更好堅持他們都在您添加的合成屬性的數組,並通過他們像這樣的循環:
for (UITextField *textField in self.myArrayOfTextFields) {
[textField setHidden:YES];
}
@ danh的回答更詳細:) – 2012-04-08 04:58:06
太棒了!我喜歡 !謝謝 ! – 2012-04-08 06:17:22