2012-08-15 2 views
-1

다른 단추를 눌렀을 때 단추가 선택된 상태인지 확인해야하는 프로그램이 있습니다. 선택한 버튼을 설정할 때 특정 숫자로 int를 설정할 수 있다는 것을 알지만, 그 방법에 대해서는 약간의 라운드 인 것처럼 보입니다. 그래서 나는이 시도 :UIControlState가 선택되어 있는지 확인하십시오.

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

을하지만 난

내가하려고 무엇을 할 수있는 가장 좋은 방법은 무엇입니까 컴파일 경고 "포인터와 정수 (있는 UIButton * '와'INT ')의 비교"를 얻을 해야 할 것? (. 내가 button1이있는있는 UIButton 속성을 가정하고있는 무슨이다)

+0

기본 논리 - 왜 정수 상수에 단추를 비교 하시겠습니까? –

답변

2

당신은 당신이 아니라 버튼의 기준보다 버튼의 state 속성을 확인해야

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

정말 고마워! 그것은 매력처럼 작동합니다! – LaurenG

+0

.state는 비트 마스크입니다. '(state & UIControlStateSelected) 대신'을 사용하거나 더 나은'button1.isSelected'를 사용해야합니다. – Andy

0

같은 일을 할이 시도해야합니다 :

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

필요한 것을 얻을 수 있습니다.

0
if (button1.state == UIControlStateSelected) 

당신과 같이 열거 말 그대로 (button1 == UIControlStateSelected)

UIControlStates를 사용하여 정수로 버튼을 비교하는 때문에이 오류가 발생하는 (but only after reading the relevant docs).

1

를 원하는 것입니다 :

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 
}; 

따라서 다른 답변에서 설명한 것처럼 다음을 사용할 수 있습니다.

직접 더 간단하게 정수, 또는 비교 6,
if (button1.state == UIControlStateSelected) 

:

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