如何向UIButton添加操作

时间:2014-02-17 05:04:04

标签: uibutton action target

我一直在网上搜索这个答案,每一篇文章都跳过了实际编写动作代码的部分。我有一个简单的交互式UIButton。如果我能看到一个代码模板,上面写着“\在这里写行动代码”,那将是非常有用的! (这是iPad IOS7)

这是我能得到的......

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
   action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];

我想我明白这是如何设置一个潜在的动作,但我在哪里编写动作本身的实际代码?

3 个答案:

答案 0 :(得分:1)

我想更多地扩展已经在这里回答的内容,这两个回答都是正确的,但我想解释为什么/这一切都有效。

[button addTarget:self  
   action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown];

首先要注意的是; target

目标是一个类的实例,任何类。这个类的唯一要求是它必须实现action

action是您在用户按下按钮时要调用的方法。

@selector(aMethod:)基本上将此视为方法签名。因为Objective-c是一种动态语言,aMethod:不需要存在,但如果没有,则会使程序崩溃。

所以,如果我们把这些放在一起,每当我想按下这个按钮时:

系统将在action实例上调用target方法。

对于方法本身,它看起来像这样

- (void) aMethod:(id)sender { }

答案 1 :(得分:0)

您可以将与操作相关的代码放在该类中名为aMethod:

的方法中
- (void)aMethod:(id)sender {
    // your code for the action goes here
}

您可能也想将UIControlEventTouchUpInside用于控件事件。

答案 2 :(得分:0)

由于您已将目标设置为self,因此应将aMethod:方法添加到同一个类中。

- (IBAction)aMethod:(id)sender
{
  // do something here
}
相关问题