2012-08-15 128 views
-1

我有一個程序,我需要檢查一個按鈕是否處於選中狀態,而不是另一個按鈕被按下時。我知道在設置按鈕時,我可以將int設置爲某個數字,但這似乎有點關鍵。所以,我想這一點:檢查是否選擇了UIControlState

if (button1 == UIControlStateSelected) { 
    status.text = @"Yay!"; 
} 
else { 
    status.text = @"Boo!"; 
} 

,但我得到

是什麼做什麼,我想最好的辦法編譯警告「指針和整數(的UIButton *」和‘INT’)之間的比較」做?

+0

基本邏輯 - 爲什麼你要到一個按鈕比較整型常量? – 2012-08-15 19:13:04

回答

2

你應該這樣做

if (button1.state == UIControlStateSelected) {...} 
+0

非常感謝!它像一個魅力! – LaurenG 2012-08-15 19:30:36

+0

。狀態是一個位掩碼。你應該使用'(state&UIControlStateSelected)而不是',或者更好的'button1.isSelected' – Andy 2015-11-20 09:38:06

0

你需要檢查一下按鍵的state財產,而不是按鈕的參考試試這個(這是我假設button1是,一個UIButton屬性。):

if (button1.state == UIControlStateSelected) { ... 

這應該讓你得到你需要的東西。

1

,因爲你從字面上是在比較你的按鈕使用(button1 == UIControlStateSelected)

UIControlStates整數您收到此錯誤是什麼列舉像這樣:

enum { 
    UIControlStateNormal  = 0,      
    UIControlStateHighlighted = 1 << 0,     // used when UIControl isHighlighted is set 
    UIControlStateDisabled  = 1 << 1, 
    UIControlStateSelected  = 1 << 2,     // flag usable by app (see below) 
    UIControlStateApplication = 0x00FF0000,    // additional flags available for application use 
    UIControlStateReserved  = 0xFF000000    // flags reserved for internal framework use 
}; 

正如其他答案中所述,您可以使用:

if (button1.state == UIControlStateSelected) 

直接比較整數,或者更簡單地說:

if (button1.isSelected) { 
    status.text = @"Yay!"; 
} 
else { 
    status.text = @"Boo!"; 
}