在 Swift 中获取 UIAlertAction 的处理程序
Get handler of UIAlertAction in Swift
如何在 Swift 中获取 UIAlertAction
的处理程序。它是在初始化时设置的,但是我还没有找到任何 属性 来阻止操作的结束。闭包是 (UIAlertAction) -> Void
类型,但是我想获取闭包的内容,以便我有一些像 () -> Void
这样的闭包。这可能吗?感谢您的回答
UIAlertAction class 未公开 member/property。然而,我们可以通过 subclassing UIAlertAction 自己管理它,并让一些成员命名为 "actionHandler" 来存储它。
我为此创建了一个子类,如下所示:
/// An UIAlertAction which saves the handler. Can be used for unit testing the action callback.
final class UIExecutableAlertAction: UIAlertAction {
private var handler: ((UIAlertAction) -> Swift.Void)?
static func with(title: String?, style: UIAlertActionStyle, handler: ((UIAlertAction) -> Swift.Void)? = nil) -> UIExecutableAlertAction {
let action = UIExecutableAlertAction(title: title, style: style, handler: handler)
action.handler = handler
return action
}
func execute() {
handler?(self)
}
}
可以这样使用:
let myAction = UIExecutableAlertAction.with(title: "title", style: .destructive, handler: { [weak self] _ in
// Do something
})
如何在 Swift 中获取 UIAlertAction
的处理程序。它是在初始化时设置的,但是我还没有找到任何 属性 来阻止操作的结束。闭包是 (UIAlertAction) -> Void
类型,但是我想获取闭包的内容,以便我有一些像 () -> Void
这样的闭包。这可能吗?感谢您的回答
UIAlertAction class 未公开 member/property。然而,我们可以通过 subclassing UIAlertAction 自己管理它,并让一些成员命名为 "actionHandler" 来存储它。
我为此创建了一个子类,如下所示:
/// An UIAlertAction which saves the handler. Can be used for unit testing the action callback.
final class UIExecutableAlertAction: UIAlertAction {
private var handler: ((UIAlertAction) -> Swift.Void)?
static func with(title: String?, style: UIAlertActionStyle, handler: ((UIAlertAction) -> Swift.Void)? = nil) -> UIExecutableAlertAction {
let action = UIExecutableAlertAction(title: title, style: style, handler: handler)
action.handler = handler
return action
}
func execute() {
handler?(self)
}
}
可以这样使用:
let myAction = UIExecutableAlertAction.with(title: "title", style: .destructive, handler: { [weak self] _ in
// Do something
})