Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 无法将参数传递到@selector方法?_Iphone_Ios_Xcode_Ipad - Fatal编程技术网

Iphone 无法将参数传递到@selector方法?

Iphone 无法将参数传递到@selector方法?,iphone,ios,xcode,ipad,Iphone,Ios,Xcode,Ipad,我目前正在尝试使用一个名为X的UIButton从视图中删除精灵 基本上,我的代码是这样工作的:当触摸一个精灵时,会向代理视图控制器发送一条消息,该消息会传递已选择的精灵*精灵。在这个方法中,我在精灵的顶部绘制一个UIButton。到目前为止,一切顺利 但是,问题是我现在希望我的UIButton在按下按钮时运行@selector来删除该精灵 最初我试过这样做: -(void)spriteSelected:(Sprite *)sprite{ //delegate method implementat

我目前正在尝试使用一个名为X的UIButton从视图中删除精灵

基本上,我的代码是这样工作的:当触摸一个精灵时,会向代理视图控制器发送一条消息,该消息会传递已选择的精灵*精灵。在这个方法中,我在精灵的顶部绘制一个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];}
然而,似乎我不能像那样将参数放入选择器。有什么办法可以调整吗

谢谢

您应该在Sprite类中执行此操作,因此在原始类中:

-(void)spriteSelected:(Sprite *)sprite{
      [sprite youAreSelected];
} 
在“精灵”类中:


选择器只是一个方法标识符,而不是方法的调用,因此不能像方法调用一样包含参数

通常的管理方式是让视图控制器查看被触摸的按钮,找出它与哪个精灵关联,然后移除精灵。可能是视图控制器将精灵和按钮放在了视图的第一位,因此它应该具有所需的所有信息。

您好,请查看此链接
-(void)youAreSelected {
    [self.button addTarget:self action:@selector(removeMe:) forControlEvents: UIControlEventTouchDown];
}

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