2012-02-22 29 views
0

以下代碼我正在寫隱藏viewDidLoad中的一些按鈕。這裏的按鈕被隱藏製作隱藏按鈕時出現問題可見

- (void)viewDidLoad 
{ 
for (int i = 100; i<117; i++) 
    { 
     UIButton *smileyButton = (UIButton *)[scroll viewWithTag:i]; 
     UITextField *smileyFields = (UITextField *)[scroll viewWithTag:i]; 
     UIImageView *smileyImage = (UIImageView *)[scroll viewWithTag:i]; 
     smileyFields.hidden = YES; 
     smileyButton.hidden = YES; 
    } 
} 

現在在下面的行動是讓按鈕可見。但是,如果你有相同標籤的多個視圖按鈕不可見

-(IBAction)editButton:(id)sender 
{ 
for (int i = 100; i<117; i++) 
    { 
     UIButton *smileyButton = (UIButton *)[scroll viewWithTag:i]; 
     UITextField *smileyFields = (UITextField *)[scroll viewWithTag:i]; 
     UIImageView *smileyImage = (UIImageView *)[scroll viewWithTag:i]; 
     [smileyFields setHidden:NO]; //TextFields Not Visible 
     [smileyButton setHidden:NO]; //Buttons Not Visbile 
    } 

} 
+0

你確定你的'editButton:'方法被調用嗎? – Alexander 2012-02-22 13:58:11

+0

他們的標籤是什麼?您當前的代碼假設100至116中的每個標籤都與3個視圖關聯。 – kevboh 2012-02-22 13:59:42

+0

@亞歷山大:是的。該方法中的所有其他功能都很順利。 – Shreedhar 2012-02-22 14:03:17

回答

1

,功能viewWithTag將只返回一個視圖,因此,如果調用此3次,你總是得到同樣的觀點。

做你想做什麼,你可以遍歷所有的子視圖和檢查標籤:

for (UIView *aView in scrollView.subviews) { 
    if (aView.tag >= 100 && aView.tag < 117) { 
     aView.hidden = NO; 
    } 
} 
+0

如果是這種情況..爲什麼它不在viewDidLoad中發生? – Shreedhar 2012-02-22 14:05:25

+0

@Shreedhar:interestinh,但是Bartek對於幾個具有相同標籤的視圖是正確的。如果您使用IB,您可能會考慮將不同視圖放入不同的IBOutletCollections中。 – 2012-02-22 14:19:29

0

你建立在Interface Builder視圖控制器?如果是這樣,將每個要隱藏的東西的標籤設置爲不同的數字:嘗試一些簡單的東西,比如1,2,3等。如果您在編碼中設置tag屬性,則代替。記住你的最大標籤號碼(讓我們假設它是4)。

然後添加以下到您的.h:

- (void)setTaggedViewsHidden:(BOOL)hidden; 

及以下到您的m:

- (void)setTaggedViewsHidden:(BOOL)hidden { 
    for (NSInteger tag = 1; tag <= 4; tag++) { 
    [scroll viewWithTag:tag].hidden = hidden; 
    } 
} 

在你viewDidLoad調用它像這樣:

[self setTaggedViewsHidden:YES]; 

並在您的editButton:選擇器中調用它爲:

[self setTaggedViewsHidden:NO]; 

請記住調整setTaggedViewsHidden中的代碼以匹配您使用的標籤。最好的方法是使用#define作爲最小和最大標記的常量,並使用for循環中的常量。

+0

獎勵積分可能包括動畫視圖中的「alpha」屬性,以淡入淡出,而不是突然顯示或隱藏它們。 – kevboh 2012-02-22 14:34:04