Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
Objective c 使一系列按钮都有不同的响应_Objective C_Ios_Cocoa Touch - Fatal编程技术网

Objective c 使一系列按钮都有不同的响应

Objective c 使一系列按钮都有不同的响应,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我正在为我正在制作的游戏制作一个二维的按钮阵列。实际的数组包含一个square类的实例,其中包含按钮应该放在哪里的X和Y坐标。主“X坐标”数组是一个类对象,但“Y坐标”数组是以编程方式创建的,square类的所有实例也是如此。到目前为止,我已经在适当的位置显示了按钮,但我需要一种方法让按钮知道它们在X和Y坐标的位置。我想这样做,当一个按钮被点击时,它的图像会变为“选中”状态,但我不知道如何访问被点击的特定按钮,因为它与保持坐标的方形对象没有连接。我一直在尝试使用addTarget:action:

我正在为我正在制作的游戏制作一个二维的按钮阵列。实际的数组包含一个square类的实例,其中包含按钮应该放在哪里的X和Y坐标。主“X坐标”数组是一个类对象,但“Y坐标”数组是以编程方式创建的,square类的所有实例也是如此。到目前为止,我已经在适当的位置显示了按钮,但我需要一种方法让按钮知道它们在X和Y坐标的位置。我想这样做,当一个按钮被点击时,它的图像会变为“选中”状态,但我不知道如何访问被点击的特定按钮,因为它与保持坐标的方形对象没有连接。我一直在尝试使用
addTarget:action:forControlEvents:
,但我不知道如何将坐标传递给选择器


我不认为我需要为这个问题发布任何代码,因为我没有实际的编码错误,但是如果您想查看我的一些代码,或者如果您需要更多信息,请提问,我很乐意提供。

您尝试过使用标记吗?用
button0.tag=0,button1.tag=1,…
设置它们。添加操作时,传递按钮的标记,并在操作中使用正确的标记更新按钮


注意:我可能在这一点上错了,我不确定我是否完全理解了您的上下文,但这就是我如何识别相同类型的不同元素的方法,因此它在这里可能是可用的:)。如果我完全错了,我很抱歉。

你试过使用标签吗?用
button0.tag=0,button1.tag=1,…
设置它们。添加操作时,传递按钮的标记,并在操作中使用正确的标记更新按钮


注意:我可能在这一点上错了,我不确定我是否完全理解了您的上下文,但这就是我如何识别相同类型的不同元素的方法,因此它在这里可能是可用的:)。如果我完全错了,我很抱歉。

通过接收指向被按下按钮的指针,您分配给按钮的任何信息都将在目标方法中可用。如果需要知道按钮的坐标,则可以检查其
frame
属性,该属性包含按钮边界框的原点和大小。只需确保在AddTarget方法中正确添加选择器(它将以冒号[:]结尾),并正确设置该方法-
-(void)myButtonAction:(UIButton*)发送者

通过接收指向按下按钮的指针,您分配给按钮的任何信息都将在目标方法中可用。如果需要知道按钮的坐标,则可以检查其
frame
属性,该属性包含按钮边界框的原点和大小。只需确保在add target方法中正确添加选择器(它将以冒号[:]结尾),并正确设置方法-
-(void)myButtonAction:(UIButton*)sender

处理坐标会很简单,因为所有按钮都会尽可能将它们指向同一个选择器

[myButton addTarget:self action:@selector(buttonPressd:) forControlEvents:UIControlEventTouchUpInside];
然后按下按钮:选择器

- (IBAction)buttonPressed:(UIButton *)sender {
CGRect buttonFrame = [sender frame];
float buttonXCoord = buttonFrame.origin.x;
float buttonYCoord = buttonFrame.origin.y;

// The rest of your code goes here.
}

处理坐标会很简单,因为如果可能的话,所有的按钮都指向同一个选择器

[myButton addTarget:self action:@selector(buttonPressd:) forControlEvents:UIControlEventTouchUpInside];
然后按下按钮:选择器

- (IBAction)buttonPressed:(UIButton *)sender {
CGRect buttonFrame = [sender frame];
float buttonXCoord = buttonFrame.origin.x;
float buttonYCoord = buttonFrame.origin.y;

// The rest of your code goes here.
}

你不需要研究每个按钮的位置。就像rdurand说的,你可以给每个按钮一个不同的标签(还有标题或id)。你不需要研究每个按钮的位置。就像rdurand说的,你可以给每个按钮一个不同的标签(还有标题或id)。这是一个非常好的答案。我会让这个问题暂时没有答案,以防万一有人有一个聪明的方法以更协调的方式处理它,但这肯定是可行的。没问题,我还想知道其他开发人员将如何处理这种情况。:)实际上,我可以设置一种将标记号转换为坐标值的方法,因此这将非常有效。谢谢你的回答!这是一个非常好的答案。我会让这个问题暂时没有答案,以防万一有人有一个聪明的方法以更协调的方式处理它,但这肯定是可行的。没问题,我还想知道其他开发人员将如何处理这种情况。:)实际上,我可以设置一种将标记号转换为坐标值的方法,因此这将非常有效。谢谢你的回答!回答得好!不过,我真的很喜欢标签的工作方式,所以我将坚持使用它们。然而,我对你的答案投了赞成票,因为它仍然是有用的和相关的。好答案!不过,我真的很喜欢标签的工作方式,所以我将坚持使用它们。然而,我对你的答案投了赞成票,因为它仍然是有用的和相关的。