xcode iphone比较UIButton来自:(id)发送者与来自Array的UIButtons

时间:2011-04-18 19:38:34

标签: xcode uiview if-statement nsmutablearray compare

我有几个带有按钮的视图。 所有这些视图都链接到一个ViewController,在这个ViewController中我为所有这50个按钮定义了IBOutlets。

为了方便访问它们,我将所有UIButton存储在一个多维NSMutableArray中。出于测试目的,我给所有按钮一个独特的标题标签。 UIButtons正确存储在Array中,我可以使用titleLabel测试它。

按下一个按钮后,我调用一个方法:

-(IBAction)pushButton:(id)sender

在那里我比较:

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

尽管Array中的所选UIButton和发送者Button具有相同的titleLabel(在我的情况下是唯一的)但IF语句不正确。

anybode知道为什么吗?

谢谢,Pat

2 个答案:

答案 0 :(得分:0)

你试过把它们作为UIButtons投射吗?

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

或使用isEqual方法代替==

另外,为什么不仅仅比较titleLabel

答案 1 :(得分:0)

我只使用NSLog%@输出UIButton,我正在比较并发现,“Frame”,“opaque”,“CALayer”等信息是相同的,但是:

像“UIRoundedRectButton:= x4b3f7f0”这样的真实内存ID是不同的 因此IF语句永远不会成立。

我现在所做的是在Interface-Builder中为每个UIButton分配一个特定的标签值(在View部分中)。这个标签可以通过[sender tag]访问,并且可以很容易地与数字数组进行比较,以检查按下了哪个按钮。