ios - 在 Swift 中向自定义按钮添加闭包

标签 ios objective-c swift

我正在尝试将 Obj-c 中的以下代码转换为 swift:

自定义按钮.h

@property (nonatomic, copy) void (^defaultAction)();

自定义按钮.m

- (void)executeTargetActionBlock {
      if (self.defaultAction)
           self.defaultAction();
}

- (void) initialize {
[self addTarget:self action:@selector(executeTargetActionBlock) forControlEvents:UIControlEventTouchUpInside];
}

这个initializeMethod是在CustomButton的init方法中调用的。

最佳答案

class CustomButton: UIButton {
    var defaultAction: (() -> Void)?

    override init(frame: CGRect) {
        super.init(frame: frame)

        self.addTarget(self, action: "executeTargetActionBlock", forControlEvents: UIControlEvents.TouchUpInside)
    }

    func executeTargetActionBlock() {
        if let action = defaultAction {
            action()
        }
    }
}

关于ios - 在 Swift 中向自定义按钮添加闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685994/

相关文章:

iphone - 如何使用 iCloud 在我的应用程序之间同步 .zip 文件?

ios - 将字符串作为标签或按钮中的其他值传递

ios - 如何根据swift中的内容增加TableViewCell的高度

objective-c - 如何解决 NSInternalInconsistencyException',原因 : '+entityForName: fail report

ios - 当 UIView 高度改变时更新 AutoLayout 约束

ios - 加载 NibNamed 时崩溃(_ :owner:options:)

ios - 如何防止自定义导航栏后退按钮图像拉伸(stretch)

objective-c - 如何与消息、邮件、打印和复制共享

iOS Swift - AVPlayer 嵌入 UITableViewCell

ios - 我陷入了初始化 UIView 子类的困境