1

我正在尝试以编程方式将按钮添加到视图中,并且我正在使用以下代码:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Click Me" forState:UIControlStateNormal];
[button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchDown];
[button setFrame:CGRectMake(50, 20, 80, 70)];
[self addButton:button];

根据我的说法,代码看起来正确,但我收到错误“未知操作单击”

addbutton 和 click 是同一个类的方法,我在构造函数中添加按钮

点击方法有什么问题?有没有语法错误!

4

4 回答 4

6

您的问题是您有一个名为的方法click,但您正在告诉您的按钮该方法已命名click:。注意区别(冒号)。

将 更改@selector@seletor(click)使其与实际方法名称匹配。

另一种选择是保持@selector原样,但将您的click方法更新为click:

- (void)click:(UIButton *)button {
    // button was tapped - do something
}
于 2013-02-21T05:29:45.710 回答
1

如何向按钮添加操作的示例....

UIButton *button = [UIButton buttonWithTypeRoundRect];  
[button addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchUpInside];  
button.frame = CGRectMake(10,10,100,50);
//Do some more Configuration of the button like title.. Look at UIButton Class Reference
[self.view addSubview:button];

有时您会在选择器中的方法名称后看到一个小冒号 (:),类似于 @selector(myMethod:)
,这意味着该方法需要一些参数。冒号在方法名称中没有任何作用。如果您没有向函数发送任何参数,则不要在函数名称后加上冒号.....
在 addtarget 选项中,您可以看到 self 已指定,因为 self 包含 myMethod 函数。在这里,您应该指定包含您的方法的对象的引用。

于 2013-04-04T08:46:14.683 回答
0

嗨,只需尝试一下,-(void)click { // do what ever }即只需删除 @selector(click:) 中的冒号,希望它会起作用

于 2013-02-21T06:06:26.010 回答
0

改变

 - (void)click:(id)sender{ NSLog(@"Button Clicked"); }

或改变动作点击:点击

[button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
于 2013-02-21T05:30:21.177 回答