2011-08-31 4 views
5

IBAction 문에서 보낸 사람 개체를 처리하는 두 가지 방법을 참조하십시오. 첫 번째는 다음과 같습니다보낸 사람 ID 또는 특정 클래스로 IBAction에 캐스팅

-(IBAction)buttonPressed:(id)sender{ 
UIButton*someButton=(UIButton*)sender; 
//do something with someButton.tag or whatever 
} 

또 다른 것 같다 쉽게 :

-(IBAction)buttonPressed:(UIButton*)sender{ 
    //do something with sender.tag or whatever 
    } 

당신이 알고있는 경우에 나는 일반적으로, 다른 이상 한 스타일을 선호하는 버전 2 어떤 특별한 이유를 선택하는 버튼 만 것이다 이 방법으로 보내고 있습니까?

내가 아무것도이 보낸 사람이 될 수있는 경우 버튼처럼, 버전 1이 좋은 곳을보고, 또는 스위치 또는 슬라이더 등하지만 tag 같은 UIButton 특성을 찾는 경우가 많은 차이 경우를하지 않습니다 수 보낸 사람이 UIButton이 아닙니다. 그래서 버전 2는 훨씬 더 직설적 인 것처럼 보입니다.

그냥 내가 두 번째 버전을 사용하여 문제를 볼 버전 1.

+0

어떤 차이가되지 않습니다, 그러나 때때로 당신은 많은 다른 개체에 대해 동일한 조치를 사용하고 사용하고 태그 중 어느 태그가 올바른 태그인지 선택하여 실제로 필요에 따라 달라집니다. 인터페이스 빌더는 상관하지 않습니다. –

답변

4

을 선호하는 분명한 이유를 누락하는 경우 내가 볼 거라고 생각했다. 나는 일반적으로 두 번째 버전을 사용하며, 보낸 사람이 둘 이상의 유형의 객체 일 수있는 경우에만 첫 번째 버전을 사용합니다. 그런 다음 메서드가 어떤 유형의 개체인지 알아야하는 경우 메서드는 보낸 사람을 특정 형식으로 캐스팅하기 전에 보낸 사람을 쿼리 할 수 ​​있습니다.

은 더욱 자주 나는 발신자에 액세스 할 필요를 찾을 수 없습니다, 그래서 난 그냥 사용

- (IBAction)buttonPressed { 
    // Do something. 
} 
+0

나는 이것에 동의한다. 응답 할 필요가없는 경우에는 발신자를 그대로 둡니다. –

관련 문제