0

当我点击 UIAlertView 的 OK 按钮时,我需要更改视图的背景颜色,它的默认颜色是白色,所以每次用户点击 OK 时,我需要在两种颜色之间交替,例如白色和红色:

-(void)changeColor{

        if([self.view.backgroundColor isEqual: [UIColor whiteColor]]){

            self.view.backgroundColor=[UIColor redColor];
        }else {
            self.view.backgroundColor=[UIColor whiteColor];
        }
}

问题是,在第一次单击确定时,颜色应该变成红色,但是它没有变成红色,所以我需要第二次单击确定按钮才能获得红色的视图背景颜色。我是否错过了从第一次开始改变颜色的东西?

这是alertView:didDismissWithButtonIndex委托方法:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{


    if (buttonIndex==0) {
        //NSLog(@"It's Ok button which has been clicked");
        //Do whatever you want, commonly call to another function like so:
        [self changeColor];
    }else
        if (buttonIndex==1) {
            //NSLog(@"It's Cancel button which has been clicked");
        }

}
4

2 回答 2

5

它可能与返回的“白色”不同[UIColor whiteColor]。如果您在 IB 中为您的视图选择白色并记录它,您将获得: UIDeviceRGBColorSpace 1 1 1 1

如果您随后将颜色设置为[UIColor whiteColor],并再次记录,您将获得:UIDeviceWhiteColorSpace 1 1

于 2012-06-08T03:30:52.163 回答
1

如前所述,它实际上不是 [UIColor whiteColor]。在视图加载时手动设置:

- (void)viewDidLoad
{
    self.view.backgroundColor = [UIColor whiteColor];
}
于 2012-06-08T03:33:27.187 回答