2011-04-18 44 views
0

我有幾個帶有按鈕的視圖。 所有這些視圖都鏈接到一個ViewController,並且在此ViewController中,我爲所有這50個按鈕定義了IBOutlets。xcode iphone將UIButton從:(id)發件人與陣列中的UIButtons進行比較

爲了方便訪問它們,我將所有UIButtons存儲在多維NSMutableArray中。爲了測試目的,我給所有的按鈕一個獨特的titleLabel。 UIButtons被正確地存儲在數組中,我可以使用titleLabel來測試它。一個按鈕被按下

後,我調用一個方法:

-(IBAction)pushButton:(id)sender 

在那裏我比較:

if ([allButtonsArray objectAtIndex:1] == sender) 
// do something 

Allthough所選的UIButton從陣列和發送者按鈕具有相同titleLabel(這在我的情況下是唯一的)IF語句不正確。

是否anybode有一個想法爲什麼?

謝謝,帕特

回答

0

你有沒有嘗試將它們鑄造爲UIButtons?

if ((UIButton *)[allButtonsArray objectAtIndex:1] == (UIButton *)sender)

或使用isEqual方法,而不是==

也是,爲什麼不只是比較titleLabel呢?

0

我只輸出的UIButton使用的NSLog%@其中我比較,發現,像「框架」,「不透明」「的CALayer」等方面的信息是相同的,但是:

實際內存ID像「UIRoundedRectButton:= x4b3f7f0」是不同的 因此,IF語句從不是真實的。

我現在所做的是在Interface-Builder中爲每個UIButton分配一個特定的標籤值(在View部分)。該標籤可以通過[發件人標籤]訪問,並且可以很容易地與數字數組進行比較,以檢查按下哪個按鈕。