我正在尝试创建一个创建按钮的自定义类。我在向其类中的该按钮添加目标时遇到问题。这是我的代码
class SelectButton{
var button:UIButton = UIButton()
init(button_frame: CGRect, button_title: String, connected: [UIButton]?){
self.button.frame = button_frame
self.button.setTitle(button_title, for: UIControlState.normal)
self.button.addTarget(self, action:#selector(self.buttonPressed), for: .touchUpInside)
}
func construct() -> UIButton {
return self.button
}
@objc func buttonPressed() {
print("Button Clicked")
}
}
问题是我无法连接按钮单击操作。如果它在我的类外使用但在类内不使用,则此方法有效。
类的使用
let test = SelectButton(button_frame: CGRect(x:50, y:50, width: 250, height:150), button_title: "Test button", connected: nil).construct()
self.view.addSubview(test)
最佳答案
当有人点击按钮时,通常您希望应用程序中的其他地方发生一些事情(例如在您的 View Controller 之一或其他一些 UI 元素中)。 IBAction 现在的设置方式是,当有人点击按钮时,按钮本身就会触发或发生某些事情。如果您想以编程方式处理按钮点击,而不是按 Ctrl 键从按钮拖动到 View Controller 中,如果您愿意,可以这样做。首先,将此代码添加到 View Controller 中:
@IBAction func buttonPressed(sender: UIButton) {
}
然后您可以通过将此方法添加到 View Controller 中以编程方式添加选择器:
myButton.addTarget(self, action:self.buttonPressed(sender), for: .touchUpInside)
或者转到连接检查器并从内部的 touch up 拖动到 View Controller 代码中的 IBAction 点。另外,正如其他人在评论中指出的那样,您应该通过将其添加到类声明中来使按钮继承自 UIButton:
class SelectButton: UIButton {
. . .
}
关于ios - Swift 自定义按钮类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44835459/