2011-03-15 34 views
-1

我有5個按鈕名爲opt1,opt2,opt3等如果我想隱藏/顯示/對他們做些什麼,我可以創建一個簡單的陳述,而不是做opt1 .hidden = YES,opt2.hidden ....?如果是這樣,它會是什麼樣子?由於需要一些幫助清理我的代碼

編輯:這是我試圖清理代碼:

opt1.hidden = NO; 
opt2.hidden = NO; 
opt3.hidden = NO; 
opt4.hidden = NO; 
opt5.hidden = NO; 

有一個簡單的發言中,我可以使用,將隱藏所有的人,而不必手動隱藏,因爲唯一的區別每一個在他們的名字是最後的數字?它看起來並不像很多按鈕,但我將不得不再多添加一些按鈕,所以我寧願不用20行代碼來隱藏一堆按鈕。

+3

我看不到要清理的代碼。 – Shoban 2011-03-15 02:49:19

+0

需要更多信息,顯示/隱藏它們的邏輯是什麼。即如果你只是想隱藏,如果按鈕顯示(反之亦然),你可以做button.hidden =!button.hidden,這取決於你想要達到什麼。 – Rog 2011-03-15 02:50:27

回答

4

你可以這樣做。

NSArray *myButtons = [NSArray arrayWithObjects:b1, b2, b3, b4, nil]; 

for (UIButton *button in myButtons) 
{ 
    button.hidden = YES; 
} 
+0

該應用程序在for語句行上用SIGABRT崩潰。任何想法爲什麼? – Preston 2011-03-15 03:10:15

+0

沒關係,我明白了。 – Preston 2011-03-15 03:18:49

1

大衛的建議是一個很好的,如果你知道並有一個指針,所有的按鈕。

另一種方法是遍歷所有的UIView子視圖,並隱藏按鈕,你找到他們:

for (id subview in self.view) 
{ 
    if ([subview isKindOfClass:[UIButton class]]) 
     [(UIButton*)subview setHidden:YES]; 
} 

如果您想選擇與你是隱藏的按鈕,只需一個特定的標記添加到它在創建時(即button1.tag = 999)及用途:

for (id subview in self.view) 
{ 
    if ([subview isKindOfClass:[UIButton class]] && subview.tag == 999) 
     [(UIButton*)subview setHidden:YES]; 
} 
0

大衛的回答可能是最好的,而且是我會怎麼做了少量的控制。你也可以使用KVC。

NSArray *myButtons = [NSArray arrayWithObjects:@"b1", @"b2", @"b3", @"b4", nil]; 

for (NSString *str in myButtons) 
{ 
    id cont = [self valueForKey:key] ; 
    if ([cont isKindOfClass:[UIButton class]]) { 
     [cont setHidden:YES] ; 
    } 
} 

我向您展示這種方法的原因是它可以用來在數據庫和控件之間創建「綁定」。想象一下,如果myButtons數組包含DB字段的名稱。然後,您可以使用相同的名稱在您的控制器中命名您的UI控件。然後,你需要的只是一個簡單的for循環,也許一些是KindOfClass測試,將所有的控制數據移動到你的數據庫中。這是我的一個項目的一個例子。

NSArray *fn = [AOSConfig sharedInstance].fieldNames ; 
for (NSString* name in fn) { 
    @try { 
     id uifield = [self valueForKey:name] ; 
     if ([cont isKindOfClass:[UITextField class]]) { 
      [aosShotData setValue:[uifield valueForKey:@"text"] forKey:name]  
     } 
    } 
    @catch(NSException *e) { 
    } 
} 

這就是將所有的文本數據保存到CoreData管理對象。如果您需要各種數據類型,您需要具有創意。如果數據庫在數據類型方面很複雜以控制映射,那麼只需將其寫入強力文件可能會更好。