我的应用中有多个UIButton。我也使用interfacebuilder。在我的.h我有这样的东西
IBOutlet UIButton *button1;
IBOutlet UIButton *button2;
IBOutlet UIButton *button3;
- (IBAction)buttonPressed;
然后我想做这样的事情
- (IBAction)buttonPressed {
if (theButtonIpressed == button1)
{
// do something if
}
}
问题是我没有一个名为“theButtonIpressed”的东西,所以我不能这样做。我的if语句应该是什么样的?我不想为每个按钮做一个 - (IBAction)。有什么东西我可以确定按下了哪个按钮?谢谢!
谢谢,
-David
答案 0 :(得分:4)
您还可以在界面构建器中为每个按钮设置标签属性,然后使用它来找出按下了哪个按钮....这也意味着您不需要定义所有按钮引用(UIButton)并在代码中跟踪它们....
- (void) doSomething:(id)sender {
int buttonPressed = [sender tag];
switch (buttonPressed) {
case 0:....
// etc
}
}
答案 1 :(得分:2)
将- (IBAction)buttonPressed
定义为:
- (IBAction)buttonPressed: (UIButton *) buttonIpressed
然后它会起作用。
答案 2 :(得分:1)
- (IBAction)buttonPressed:(UIButton*)button
但是如果你为每个按钮做了不同的事情,那么正确的方式就是创建单独的IBActions。
答案 3 :(得分:0)
您可以为每个按钮使用标记值
IBOutlet UIButton *button1;
button1.tag = 100;
IBOutlet UIButton *button2;
button2.tag = 200;
IBOutlet UIButton *button3;
button3.tag = 300;
- (IBAction)buttonPressed:(id)sender
{
if ([sender tag]==100)
{
NSLOG("button1");
}
else if([sender tag]==200)
{
NSLOG("button2");
}
else {
NSLOG("button3");
}
}