我目前正在尝试使用标题为“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];}
但是,我似乎无法将参数放入选择器中。关于我如何调整这个的任何想法?
由于
答案 0 :(得分:3)
您应该在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];
}
答案 1 :(得分:2)
选择器只是方法标识符,而不是方法的调用,因此您不能将参数包含在方法调用中。
管理这样的事情的通常方法是让视图控制器查看被触摸的按钮,找出与之关联的精灵,并删除精灵。视图控制器可能首先将精灵和按钮放在视图中,因此它应该具有所需的所有信息。