2012-01-10 5 views
1

현재 뷰에서 Sprite를 제거하는 방법으로 "U"라는 제목의 UIButton을 사용하려고합니다.@selector 메서드에 인수를 전달할 수 없습니까?

기본적으로 내 코드는 스프라이트에 닿았을 때 선택된 스프라이트 (*) 스프라이트를 전달하는 대리자 (보기 컨트롤러)로 메시지가 전송되도록 작동합니다. 이 방법에서는 해당 스프라이트 위에 UIButton을 그립니다. 여태까지는 그런대로 잘됐다.

그러나 문제는 버튼을 터치 할 때마다 내 UIButton에서 @selector를 실행하여 해당 스프라이트를 제거하도록하려는 것입니다.

-(void)spriteSelected:(Sprite *)sprite{ //delegate method implementation 
     [sprite.button addTarget:self action:@selector(removeSprite:sprite) forControlEvents: UIControlEventTouchDown] 
}  

-(void)removeSprite:(Sprite *)sprite{ 
     [sprite removeFromSuperView];} 

그러나, 나는 그 같은 선택에 인수를 세울 수 없을 것 같다

처음에 나는이 시도했다. 어떻게 조정할 수 있을지에 대한 아이디어가 있습니까?

감사

+1

안녕하세요,이 링크를 확인하십시오. http://stackoverflow.com/questions/3716633/passing-parameters-on-button-actionselector – SriPriya

답변

3

원래 클래스, 그래서 당신은 Sprite 클래스에서이 작업을 수행해야합니다

-(void)youAreSelected { 
    [self.button addTarget:self action:@selector(removeMe:) forControlEvents: UIControlEventTouchDown]; 
} 

-(void)removeMe:(id)sender { 
    [self removeFromSuperView]; 
} 
2

셀렉터는 단순히 메소드 식별자 다음 Sprite 클래스에서

-(void)spriteSelected:(Sprite *)sprite{ 
     [sprite youAreSelected]; 
} 

, 메서드의 호출이 아니므로 메서드 호출 인 것처럼 매개 변수를 포함 할 수 없습니다.

이런 식으로 관리하는 일반적인 방법은 뷰 컨트롤러가 터치 한 단추를보고 연결된 스프라이트를 계산하고 스프라이트를 제거하는 것입니다. 뷰 컨트롤러는 스프라이트와 버튼을 뷰에 처음부터 배치했기 때문에 필요로하는 모든 정보를 포함해야했습니다.

관련 문제