制作一个按钮数组都有不同的反应

时间:2012-09-18 14:18:46

标签: objective-c ios cocoa-touch

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

[myButton addTarget:self action:@selector(buttonPressd:) forControlEvents:UIControlEventTouchUpInside];

然后在buttonPressed:selector ...

- (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.
}

答案 2 :(得分:0)

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