2012-06-08 59 views
0

當我點擊確定按鈕的UIAlertView,我需要改變視圖的背景顏色,其默認顏色是白色,所以每次用戶點擊確定,我需要兩種顏色,白色和紅色例如之間交替:比較兩個UIColors是不是第一次工作

-(void)changeColor{ 

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

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

的問題是,在第一次點擊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"); 
     } 

} 
+0

您確定視圖的背景顏色是以「[UIColor whiteColor]」開始的嗎?如果不是,那麼第一次點擊會使它變成白色,然後第二次點擊會使它變成紅色。 – mttrb

+0

是的,它由IB配置爲白色,所以它開始白色 – Luca

回答

5

它可能不是由[UIColor whiteColor]返回相同的「白色」。如果你選擇了白色的IB爲您的觀點和記錄它,你就會得到:UIDeviceRGBColorSpace 1 1 1 1

如果然後將顏色設置爲[UIColor whiteColor],並重新登錄它,你就會得到:UIDeviceWhiteColorSpace 1 1

1

如前所述,它不是實際上[UIColor whiteColor]。當視圖加載時手動設置它:

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