2011-04-18 49 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部分)。该标签可以通过[发件人标签]访问,并且可以很容易地与数字数组进行比较,以检查按下哪个按钮。