如何设置按钮的操作而不必将其连接到方法?苹果手机

时间:2013-07-15 04:09:00

标签: objective-c uibutton

我知道如何在按下按钮后运行代码的唯一方法是使用xCode实际为其创建一个方法。是否可以制作一个if语句,询问是否按下了它?像

这样的东西
if(button.ispressed)
{
 //code here
}

编辑:if语句将在计划的计时器中,因此将不断检查。

3 个答案:

答案 0 :(得分:1)

您可以使用:(id)sender

执行此操作
-(IBAction)someAction:(id)sender
{
     if(sender == yourButtonInstance)
     {
        //yourButtonInstance is Pressed.
     }
}

答案 1 :(得分:1)

不,因为这违背了event-driven paradigm(花哨的谈话“按下按钮,你会得到一个动作)。要做你所要求的,那么你需要不断检查是否有任何一个屏幕上的按钮被按下了。

你可以实现的最接近的事情是,将所有按钮定位到相同的方法,然后检查谁是调用者。

例如,让我们链接这三个按钮(附有@property

[self.button1 addTarget:self action:@selector(weAllGotPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.button2 addTarget:self action:@selector(weAllGotPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.button3 addTarget:self action:@selector(weAllGotPressed:) forControlEvents:UIControlEventTouchUpInside];

然后,在回调方法中,执行以下操作:

- (void)weAllGotPressed:(UIButton*)button
{
    if (button == self.button1)
    {
        // Do something
    }
    else if (button == self.button2)
    {
        // Do something else
    }
    else if (button == self.button3)
    {
        // Do another thing
    }
}

如果您不想使用@property检查UIButton地址,也可以使用视图标记来识别它们。

答案 2 :(得分:0)

是的,但是你真的应该只针对一个无意触发立即行动的控制来做这件事;例如,您有许多没有处理程序的复选框和一个带处理程序的操作按钮。

确定维持状态的控件的状态;例如复选框和单选按钮;使用stateUIControl的方法NSControl

如果按钮不记得状态,例如大多数按钮(它们可以配置为按下/推开开关并因此保持状态),则无法确定按下按钮是否没有处理程序来记录事实。

HTH