假设我有一个静态按钮成员变量,以及一个处理其点击的静态方法。如何使用方法连接按钮?在这种情况下,我无法弄清楚如何让addTarget
工作:
private static let my_button: UIButton = {
let button = UIButton(type: .system)
...
button.addTarget(???, action: #selector(handleButtonClick), for: .touchUpInside)
return button
}()
private static func handleButtonClick() {
...
}
我可以用UIApplication.shared.keyWindow!.rootViewController
代替???
吗?
答案 0 :(得分:1)
xCode 8.2.1,Swift 3
import UIKit
class Button:NSObject {
class func createButton() -> UIButton {
let button = UIButton(type: .system)
button.frame = CGRect(x: 40, y: 40, width: 200, height: 40)
button.setTitle("Text", for: .normal)
button.addTarget(self, action: #selector(Button.handleButtonClick), for: .touchUpInside)
return button
}
class func handleButtonClick() {
print("Click")
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
view.addSubview(Button.createButton())
}
}
答案 1 :(得分:0)
你必须有一个实际的对象 - 你的类的一个实例 - 作为按钮的目标。有可能传递类对象,但这不是它应该如何工作。该按钮基本上要求其目标是继承自NSResponder
的对象。