2012-09-18 19 views
0

我正在按鈕的二維陣列的一個遊戲我正在做。實際的數組擁有一個方形類的實例,它具有(除其他之外)按鈕應該去的X和Y座標。主要的「X座標」數組是一個類對象,但是「Y座標」數組是以編程方式創建的,正方形類的所有實例也是如此。到目前爲止,我已經將按鈕顯示在正確的位置,但我需要一種方法讓按鈕瞭解X和Y座標的位置。我希望把它使得單擊按鈕時,它的形象改變爲「選擇」的狀態,但我不知道如何訪問被點擊的特定按鈕,因爲它未連接到包含座標中方形物體。我一直在玩弄addTarget:action:forControlEvents:,但我不知道如何將選項傳遞給選手。形成陣列按鈕所有反應不同

我不認爲我需要張貼任何代碼這個問題,因爲我沒有一個實際的編碼錯誤,但如果你想看到我的一些代碼,或者如果您需要更多信息,只是問,我很樂意提供。

+0

你並不需要研究每個button.Like rdurand的位置說,你可以給不同的標籤(也標題或ID)到每個按鈕。 –

回答

2

您是否嘗試過使用標籤?將它們設置爲button0.tag = 0, button1.tag = 1, ...。添加動作時,傳遞按鈕的標籤,並在動作中使用正確的標籤更新按鈕。

注意:我可能對此有誤,我不確定我是否完全理解了您的上下文,但是這就是我如何識別同一類型的不同元素,因此它可能適用於此:)。如果我完全錯了,我很抱歉。

+0

這是一個非常好的答案。我會讓這個問題遲遲不回答,以防萬一有人以更加協調的方式處理它,但這絕對是可行的。 – Chance

+0

沒問題,我也有興趣知道其他開發者如何處理這種情況。 :) – rdurand

+0

實際上,我可以設置一種將標記號碼轉換爲座標值的方法,因此這可以很好地工作。感謝你的回答! – Chance

0

您分配給該按鈕的任何信息將在目標方法可藉助於接收的指針被按下的按鈕的。如果您需要了解該按鈕的座標,那麼你可以檢查其frame屬性,它包含的起源和按鈕的邊框的大小兩者。只要確保在添加目標方法中正確添加選擇器(它將以冒號[:]結尾)並正確設置方法 - - (void)myButtonAction:(UIButton *)sender

1

處理座標將很簡單,因爲所有按鈕都指向它們如果可能的話給同一個選擇器。

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

然後在buttonPressed:選擇...

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

很好的答案!不過,我真的很喜歡標籤的工作方式,所以我會堅持使用它們。不過,我提高了你的答案,因爲它仍然有幫助和相關。 – Chance