我有几个带有按钮的视图。 所有这些视图都链接到一个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
答案 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]访问,并且可以很容易地与数字数组进行比较,以检查按下了哪个按钮。