2009-12-25 5 views
0

이렇게 이것은 꽤나 간단합니다. 그러나 어떻게해야할지 모르겠습니다. 버튼에서 제목을 얻으려면, 당신은 사용할 수 있습니다 : 그러나(id) 발신자를 사용하여 버튼에서 정보 얻기

NSString *title = [sender titleForState:UIControlStateNormal]; 

, 버튼에서 다른 정보를 얻을 수있는 방법 등은 "라벨"또는 "힌트"로가?

그렇지 않은 경우 다른 버튼을 누르면 다른 작업을 수행 할 수 있기를 원합니다. 그래서, "add 1"버튼, "add 2"버튼 등등, 나는 약간 다른 것들을하기위한 동일한 "action"이 있습니다. 이 문제는 "If"문으로 해결할 수 있지만 비교 방법을 잘 모릅니다. (버튼 제목이 "WIN"이라고 가정) :

if (title == @"WIN") 

어떻게 비교할 수 있습니까?

은 (나는 또한 시도 :

NSString *compare = [[NSString alloc] initWithFormat:@"WIN"]; 
if (title == compare) 
{ 
do something 
} 

)

답변

4

당신은 항상 사용하여 문자열을 비교해야 isEqualToString :

if ([title isEqualToString:@"WIN"]) 

문자열이 제대로 때때로 때와 같이, == 연산자를 사용하여 비교합니다 상수 문자열을 비교하지만 Objective-C (또는 Java 중 하나)에서 문자열 비교에 ==를 사용하면 안됩니다.

==를 사용하여 문자열과 비교하면 메모리 주소가 비교됩니다. 상수로 설정된 문자열을 비교하는 경우 ==가 true가됩니다. 두 문자열이 같은 문자열이지만 다른 메모리 주소 인 경우 ==는 거짓입니다.

Python과 같은 언어에서 ==은 오버로드되어 예상 한 동작을 얻습니다.

+2

또한 지적 할 것 다른 일을하는 두 개의 버튼은 동일한 동작을 사용합니다. 대신 버튼에 대해 두 개의 개별 작업을 만듭니다. 이렇게하면 버튼에 대한 정보 (예 : 제목)를 확인하지 않아도 무엇을해야하는지 파악할 수 있습니다. – gerry3

1

당신이 핀치에 사용할 수있는 또 다른 옵션은 (코드 IB 또는에서) 버튼의 tag 속성을 설정하고 확인하는 것입니다 일반적으로 당신이하지 않아도

if (sender.tag == 69) {//one button code} else {other button code}