无法将参数传递给@selector方法?

我目前正在尝试使用标题为“X”的UIButton作为从视图中删除Sprite的方法。

基本上,我的代码工作,以便在触摸Sprite时,会向委托(View Controller)发送一条消息,该委托传递已选择的(Sprite *)精灵。 在这个方法中,我在该sprite之上绘制一个UIButton。 到现在为止还挺好。

但是,问题是我现在希望我的UIButton在按下按钮时运行@selector来删除该sprite。

最初我试过这个:

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

但是,我似乎无法将参数放入选择器中。 关于我如何调整这个的任何想法?

谢谢

你应该在Sprite类中这样做,所以在原始类中:

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

Sprite类中:

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

选择器只是方法标识符,而不是方法的调用,因此您不能将参数包含在方法调用中。

管理这样的事情的通常方法是让视图控制器查看被触摸的按钮,找出与之关联的精灵,并删除精灵。 视图控制器可能首先将精灵和按钮放在视图中,因此它应该具有所需的所有信息。