gpt4 book ai didi

objective-c - UIButton 在代码中设置触摸处理程序

转载 作者:可可西里 更新时间:2023-11-01 04:08:00 25 4
gpt4 key购买 nike

我想完成触摸 UIButton 并让代码在与所有者不同 的类中运行。

我意识到我可以对按钮的所有者(ClassA)执行touchUpInside,然后调用ClassB ,但是有什么方法可以加快这个过程吗?

想法:

  • ClassB 成为 ClassA->UIButton 的委托(delegate)

  • 在编程中设置touchUpInside调用来使用ClassB

    中的函数

我不确定如何完成这些想法中的任何一个:(非常感谢您的输入!

最佳答案

一个选项是设置按钮使用

[myButton addTarget:yourOtherClass action:@selector(mySelector:) forControlEvents:UIControlEventTouchUpInside];

但这有点危险,因为 target 没有保留,因此您可以将消息发送到已释放的对象。

你可以设置一个协议(protocol)

MyController.h

@protocol MyControllerDelegate
- (void)myController:(MyController *)controller buttonTapped:(UIButton *)button;
@end

@interface MyController : UIViewController

@property (nonatomic, assign) id <MyControllerDelegate> delegate;

- (IBAction)buttonTapped:(UIButton *)button;

@end

然后在你的实现中

MyController.m

- (IBAction)buttonTapped:(UIButton *)button
{
if ([self.delegate respondsToSelector:@selector(myController:buttonTapped:)]) {
[self.delegate myController:self buttonTapped:button];
}
}

因为协议(protocol)中定义的方法不是可选的,所以我可以改为检查 (self.delegate) 以确保设置它而不是 respondsToSelector

关于objective-c - UIButton 在代码中设置触摸处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7946474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com