2013-02-20 37 views
1

我有三個視圖和三個按鈕的每個按鈕切換視圖(隱藏= YES/NO)確定是否視圖被隱藏或不和改變按鈕狀態編程

- (IBAction)switchOne:(id)sender {   
    [_firstPage setHidden:NO]; 
    [_secondPage setHidden:YES]; 
    [_thirdPage setHidden:YES]; 
} 

- (IBAction)switchTwo:(id)sender {   
    [_firstPage setHidden:YES]; 
    [_secondPage setHidden:NO]; 
    [_thirdPage setHidden:YES];   
} 

- (IBAction)switchThree:(id)sender {   
    [_firstPage setHidden:YES]; 
    [_secondPage setHidden:YES]; 
    [_thirdPage setHidden:NO]; 
} 

我想設置的按鈕的背景取決於視圖是否隱藏。

我都試過,但沒有結果:

if (_firstPage.hidden == NO) 
{ 
    UIImage *buttonImage = [UIImage imageNamed:@"currentPage.png"]; 
    [_pageOneButton setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
    [self.view addSubview:_pageOneButton]; 

} else if (_firstPage.hidden == YES) { 
    [_pageOneButton setBackgroundImage:nil forState:UIControlStateNormal]; 
} 

_pageOneButton保持背景甚至隱藏的視圖。

我離開菜單的圖像作爲現在爲:

menu-active

的要點是:當Página2是活動的(隱藏==否),第1頁按鈕應沒有背景。

回答

2

這裏有一些細節,但在此期間您可以使用以下建議玩一下。

首先,將你的

[self.view addSubview:_pageOneButton]; 

的方法之外。例如,在viewDidLoad方法中,您將該按鈕添加到superview

然後你就可以控制它的狀態(通過對它的引用,像你一樣)喜歡

// set the image 
[_pageOneButton setImage:image forState:UIControlStateNormal]; 

// remove the image 
[_pageOneButton setImage:nil forState:UIControlStateNormal]; 
+0

我有,如果在'viewDidLoad'方法聲明,我應該將它移動到' - (IBAction爲)'方法,只留下'[self.view addSubview:_pageOneButton];'在'viewDidLoad'中? – roymckrank 2013-02-20 22:01:36

+0

我已經在每個按鈕中添加了一堆if語句來檢查視圖是否隱藏,這是否有效。 @flexaddicted非常感謝你!你救了我! – roymckrank 2013-02-20 22:42:55

相關問題