确定视图是否隐藏,并以编程方式更改按钮状态

时间:2013-02-20 20:14:05

标签: ios uiview uibutton visibility

我有三个视图和三个按钮,每个按钮切换视图(隐藏=是/否)

- (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处于活动状态时(隐藏==否),Página1按钮应该没有背景。

1 个答案:

答案 0 :(得分:2)

这里有一些细节,但在此期间你可以尝试以下建议。

首先,移动你的

[self.view addSubview:_pageOneButton];

在方法之外。例如,在viewDidLoad方法中,您将该按钮添加到superview

然后你可以像

一样控制它的状态(通过对它的引用)
// set the image
[_pageOneButton setImage:image forState:UIControlStateNormal];

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