Ios swift 按功能替换选择器
Ios swift replace selector by function
我只想在按钮点击上写一两行代码like
print("Button Clicked")
为此我不想创建一个单独的函数并通过选择器调用
作为
action: #selector(BtnKlkFnc(_:))
我想简化一下
action: { action in print("Button Clicked")}
我也试过了
#selector({print("Button Clicked")})
谁能帮我简化一下
我是 Whosebug 的新手,还没有足够的声誉,所以请为我的问题投票,这样我就可以为你的答案投票
简答:你不能那样做。按钮操作是 target/action 内置于 Cocoa/Cocoa 触摸中的机制的一部分。它基于选择器,您必须创建一个命名方法并使用它的选择器。您不能将 Swift 闭包用作按钮操作。
编辑:
请注意,可以创建具有闭包 属性 的 UIButton 的自定义子类,并在点击按钮时调用该闭包。你要做的是让按钮的 init 方法将自己设置为 touchUpInside 事件的目标并调用按钮的方法,该方法反过来调用你的闭包(在确保闭包 属性 不是 nil 之后.)
编辑#2:
请注意,创建 UIButton
的自定义子类非常简单,它将自己设置为按钮按下的目标并保持关闭。
这是一个示例实现:
class ClosureButton: UIButton {
var buttonClosure: ((UIButton) -> Void)?
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addTarget(self, action: #selector(handleTap(_:)), for: .touchUpInside)
}
@objc func handleTap(_ sender: UIButton) {
if let buttonClosure = buttonClosure {
buttonClosure(sender)
} else {
print("No button closure defined")
return
}
}
}
在你的视图控制器中:
override func viewDidLoad() {
super.viewDidLoad()
button.buttonClosure = { _ in
print("You tapped the button")
}
}
我只想在按钮点击上写一两行代码like
print("Button Clicked")
为此我不想创建一个单独的函数并通过选择器调用 作为
action: #selector(BtnKlkFnc(_:))
我想简化一下
action: { action in print("Button Clicked")}
我也试过了
#selector({print("Button Clicked")})
谁能帮我简化一下
我是 Whosebug 的新手,还没有足够的声誉,所以请为我的问题投票,这样我就可以为你的答案投票
简答:你不能那样做。按钮操作是 target/action 内置于 Cocoa/Cocoa 触摸中的机制的一部分。它基于选择器,您必须创建一个命名方法并使用它的选择器。您不能将 Swift 闭包用作按钮操作。
编辑:
请注意,可以创建具有闭包 属性 的 UIButton 的自定义子类,并在点击按钮时调用该闭包。你要做的是让按钮的 init 方法将自己设置为 touchUpInside 事件的目标并调用按钮的方法,该方法反过来调用你的闭包(在确保闭包 属性 不是 nil 之后.)
编辑#2:
请注意,创建 UIButton
的自定义子类非常简单,它将自己设置为按钮按下的目标并保持关闭。
这是一个示例实现:
class ClosureButton: UIButton {
var buttonClosure: ((UIButton) -> Void)?
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addTarget(self, action: #selector(handleTap(_:)), for: .touchUpInside)
}
@objc func handleTap(_ sender: UIButton) {
if let buttonClosure = buttonClosure {
buttonClosure(sender)
} else {
print("No button closure defined")
return
}
}
}
在你的视图控制器中:
override func viewDidLoad() {
super.viewDidLoad()
button.buttonClosure = { _ in
print("You tapped the button")
}
}