【发布时间】:2011-08-16 03:38:06
【问题描述】:
我知道如何通过从界面构建器中拖动来将 IBAction 添加到按钮,但我想以编程方式添加操作以节省时间并避免不断来回切换。解决方案可能非常简单,但是当我搜索它时似乎找不到任何答案。谢谢!
【问题讨论】:
标签: ios iphone objective-c uibutton programmatically-created
我知道如何通过从界面构建器中拖动来将 IBAction 添加到按钮,但我想以编程方式添加操作以节省时间并避免不断来回切换。解决方案可能非常简单,但是当我搜索它时似乎找不到任何答案。谢谢!
【问题讨论】:
标签: ios iphone objective-c uibutton programmatically-created
试试这个:
斯威夫特 4
myButton.addTarget(self,
action: #selector(myAction),
for: .touchUpInside)
Objective-C
[myButton addTarget:self
action:@selector(myAction)
forControlEvents:UIControlEventTouchUpInside];
您可以在 Apple 的文档中找到丰富的信息来源。看看UIButton's documentation,它会发现UIButton是UIControl,的后代,它实现了add targets的方法。
--
需要注意myAction后面是否加冒号
action:@selector(myAction)
这是reference。
【讨论】:
快速回答:
myButton.addTarget(self, action: "click:", for: .touchUpInside)
func click(sender: UIButton) {
print("click")
}
文档:https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget
【讨论】:
: 作为函数参数的占位符。由于click 采用sender 参数,因此在选择器字符串中将其替换为:。
CGRect buttonFrame = CGRectMake( 10, 80, 100, 30 );
UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];
[button setTitle: @"My Button" forState: UIControlStateNormal];
[button addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
[button setTitleColor: [UIColor redColor] forState: UIControlStateNormal];
[view addSubview:button];
【讨论】:
试试这个:
首先将其写入您的视图控制器的 .h 文件中
UIButton *btn;
现在将其写入您的视图控制器 viewDidLoad 的 .m 文件中。
btn=[[UIButton alloc]initWithFrame:CGRectMake(50, 20, 30, 30)];
[btn setBackgroundColor:[UIColor orangeColor]];
//adding action programatically
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
在视图控制器的 .m 文件中写入这个外部 viewDidLoad 方法
- (IBAction)btnClicked:(id)sender
{
//Write a code you want to execute on buttons click event
}
【讨论】:
CGRect buttonFrame = CGRectMake( x-pos, y-pos, width, height ); //
CGRectMake(10,5,10,10)
UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];
button setTitle: @"My Button" forState: UIControlStateNormal];
[button addTarget:self action:@selector(btnClicked:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitleColor: [UIColor BlueVolor] forState:
UIControlStateNormal];
[view addSubview:button];
-(void)btnClicked {
// your code }
【讨论】:
对于 Swift 3
首先为按钮操作创建一个函数,然后将该函数添加到您的按钮目标
func buttonAction(sender: UIButton!) {
print("Button tapped")
}
button.addTarget(self, action: #selector(buttonAction),for: .touchUpInside)
【讨论】:
UIButton *btnNotification=[UIButton buttonWithType:UIButtonTypeCustom];
btnNotification.frame=CGRectMake(130,80,120,40);
btnNotification.backgroundColor=[UIColor greenColor];
[btnNotification setTitle:@"create Notification" forState:UIControlStateNormal];
[btnNotification addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnNotification];
}
-(void)btnClicked
{
// Here You can write functionality
}
【讨论】:
UIButton 继承自 UIControl。这具有添加/删除操作的所有方法:UIControl Class Reference。查看“准备和发送操作消息”部分,其中涵盖了– sendAction:to:forEvent: 和– addTarget:action:forControlEvents:。
【讨论】:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(aMethod1:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];
【讨论】:
IOS 14 SDK: 您可以使用闭包回调添加操作:
let button = UIButton(type: .system, primaryAction: UIAction(title: "Button Title", handler: { _ in
print("Button tapped!")
}))
获取对控制发送者的引用
let textField = UITextField()
textField.addAction(UIAction(title: "", handler: { action in
let textField = action.sender as! UITextField
print("Text is \(textField.text)")
}), for: .editingChanged)
【讨论】: