2016-05-19 12 views
2

在我當前的項目中,我需要在一個視圖控制器中維護多個容器控制器。視圖控制器上有四個按鈕。如果第一個按鈕被選中,則第一個容器將可見並且剩餘將處於隱藏狀態。類似於第二,第三和第四個按鈕。在任何時候,只有一個對用戶可見。我可以通過顯示相應的容器並通過硬編碼隱藏其餘部分來實現它。如何以有效的方式一次隱藏多個視圖在ios

@property UIView *view1; 
@property UIView *view2; 
@property UIView *view3; 
@property UIView *view4; 

- (iBAction *)firstButtonClicked:(UIButton *)button { 
self.view1.hidden = NO; 
self.view2.hidden = YES; 
self.view3.hidden = YES; 
self.view4.hidden = YES; 
} 

- (iBAction *)secondButtonClicked:(UIButton *)button { 
self.view1.hidden = YES; 
self.view2.hidden = NO; 
self.view3.hidden = YES; 
self.view4.hidden = YES; 
} 

- (iBAction *)thirdButtonClicked:(UIButton *)button { 
self.view1.hidden = YES; 
self.view2.hidden = YES; 
self.view3.hidden = NO; 
self.view4.hidden = YES; 
} 

- (iBAction *)fourthButtonClicked:(UIButton *)button { 
self.view1.hidden = YES; 
self.view2.hidden = YES; 
self.view3.hidden = YES; 
self.view4.hidden = NO; 
} 

但我不滿意這種方法。我試圖在堆棧溢出中搜索答案但不成功。 請告訴我,如果任何機構知道任何有效的方法來實現它。

謝謝。

回答

2

有幾個可能的解決方案。這裏有一個選項。

首先,給每個按鈕一個特定的標籤。給按鈕1一個標籤1.給按鈕2一個2的標籤等。

然後對所有四個按鈕使用單個動作,而不是現在的四個單獨動作。

然後實現一個動作方法是這樣的:

- (IBAction *)buttonClicked:(UIButton *)button { 
    self.view1.hidden = button.tag != 1; 
    self.view2.hidden = button.tag != 2; 
    self.view3.hidden = button.tag != 3; 
    self.view4.hidden = button.tag != 4; 
} 

如果以1:1的標籤上的按鈕被點擊,然後button.tag != 1將爲假所以self.view1.hidden將被設置爲NO。其他3個條件將成立,所以其他按鈕的hidden設置爲YES

相同的邏輯適用於其他三個按鈕,每個按鈕都有自己的標籤值。

2

給視圖標籤,如201至204或任何你喜歡的,相應地設置for循環。

點所有按鈕的下方選擇的行動,

- (void)anyButtonClicked:(UIButton *)button 
{ 

    for (int iterator = 201; iterator < 204; iterator ++) 
    { 
     UIView *currentView = [self.view viewWithTag:iterator]; 

     if (currentView.tag == button.tag) 
     { 

      [currentView setHidden:NO]; 

     } else { 

      [currentView setHidden:YES]; 
     }   
    } 
} 
1

你也可以嘗試這一點,也將消耗更少的內存 -

[yourview removeFromSuperview]; 
     yourview = nil; 
1

在任何時候,只有一個視圖被隱藏。爲什麼你需要隱藏/取消隱藏所有這些?只要做到以下(剛過@property聲明):

UIView *lastVisible = view1; 

然後你就可以寫的操作爲:

- (IBAction *)firstButtonClicked:(UIButton *)button { 
lastVisible.hidden = YES; 
self.view1.hidden = NO; 
lastVisible = self.view1; 
} 

等。這假設view1是最初可見的視圖。

相關問題