比较两个UIColors在第一次没有工作

时间:2012-06-08 02:04:38

标签: ios uialertview

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

-(void)changeColor{

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

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

问题是,在第一次OK点击时,颜色应该变成红色,但是它不会变红,所以我需要第二次单击OK按钮以获得红色的视图背景颜色。我错过了第一次改变颜色的东西吗?

这是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");
        }

}

2 个答案:

答案 0 :(得分:5)

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

如果您将颜色设置为[UIColor whiteColor],然后重新记录,则会得到:UIDeviceWhiteColorSpace 1 1

答案 1 :(得分:1)

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

- (void)viewDidLoad
{
    self.view.backgroundColor = [UIColor whiteColor];
}