2010-02-20 71 views
2

我知道如何使所有這些uiimageviews消失並再次回來,但我不知道如何寫這個更短。他們都被分配了唯一的標籤1-35。我想檢查它們是否全部隱藏,然後執行操作。寫這段代碼的更短的方法是?

if(test.hidden==YES 
     && test2.hidden==YES 
     && test3.hidden==YES 
     && test4.hidden==YES 
     && test5.hidden==YES 
     && test6.hidden==YES 
     && test7.hidden==YES 
     && test8.hidden==YES 
     && test9.hidden==YES 
     && test10.hidden==YES 
     && test11.hidden==YES 
     && test12.hidden==YES 
     && test13.hidden==YES 
     && test14.hidden==YES 
     && test15.hidden==YES 
     && test16.hidden==YES 
     && test17.hidden==YES 
     && test18.hidden==YES 
     && test19.hidden==YES 
     && test20.hidden==YES 
     && test21.hidden==YES 
     && test22.hidden==YES 
     && test23.hidden==YES 
     && test24.hidden==YES 
     && test25.hidden==YES 
     && test26.hidden==YES 
     && test27.hidden==YES 
     && test28.hidden==YES 
     && test29.hidden==YES 
     && test30.hidden==YES 
     && test31.hidden==YES 
     && test32.hidden==YES 
     && test33.hidden==YES 
     && test34.hidden==YES 
     && test35.hidden==YES){ 
do something 
} 
+1

不要比較'== YES'。 '如果(條件)'足夠了。 'if(condition == YES)'可能失敗,因爲任何非零值都是真值,但可能不等於1('YES')。 – kennytm 2010-02-20 06:07:24

+0

這對我來說似乎有些過分偏執。如果該方法被定義爲返回一個BOOL並返回一個BOOL以外的內容,那麼這是一個非常重要的失敗。我希望Cocoa實際上不會那樣做...... – 2010-02-20 07:18:11

回答

6

假設你的意思是標籤在上的UIView的-tag方法,而這些觀點都在containerView

BOOL allHidden = YES; 
for (int i = 1; allHidden == YES && i <= 35; i++) { 
    allHidden = [[containerView viewWithTag:i] isHidden]; 
} 
if (allHidden) { 
    do_something(); 
} 
4

如何保持一組測試呢?

然後,你可以簡單地這樣做:

int testresult = 0; 
for(i = 0; i < 35; i++){ 
    if(test[i].hidden != YES){ 
     testresult = 1; 
     break; 
    } 
} 

if(testresult == 0){ 
    // all tests = yes 
} 

注意這個使用C數組,而不是一個NSArray。原則上你應該從擁有大量類似命名的變量轉換爲這些東西的數組 - 在ObjC中,建議使用NSArray(根據對此答案的評論)。

+0

爲什麼他在ObjC中編程時會使用C數組? – 2010-02-20 06:05:42

+0

@Colin,C數組不允許在ObjC中? – 2010-02-20 06:07:17

+1

他們被允許,但NSArrays負責清理它們在釋放時保存的對象。 – Eld 2010-02-20 06:11:46

1

他們全部包含在相同的上海華?如果是這樣,請嘗試利用它們已經在數組中的事實:

@implementation UIView (testForHiddenSubviews) 

- (BOOL) hasHiddenSubviews 
    { 
    for (UIView *view in self.subviews) 
    if (view.hidden) 
    return YES; 
    return NO; 
    } 

- (BOOL) allSubviewsHidden 
    { 
    for (UIView *view in self.subviews) 
    if (!view.hidden) 
     return NO; 
    return YES; 
    } 

@end 
相關問題