Ios Swift自定义按钮类
我试图创建一个自定义类来创建一个按钮。我在类中的按钮中添加目标时遇到问题。这是我的密码Ios Swift自定义按钮类,ios,swift,swift3,Ios,Swift,Swift3,我试图创建一个自定义类来创建一个按钮。我在类中的按钮中添加目标时遇到问题。这是我的密码 class SelectButton{ var button:UIButton = UIButton() init(button_frame: CGRect, button_title: String, connected: [UIButton]?){ self.button.frame = button_frame self
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)
当有人点击按钮时,通常您希望在应用程序中的其他地方发生某些事情(例如在某个视图控制器或其他UI元素中)。iAction现在的设置方式是,当有人点击按钮时,按钮本身会触发或发生某些事情。如果希望以编程方式处理按钮点击,而不是按ctrl键将按钮拖动到视图控制器中,如果愿意,可以这样做。首先,将以下代码添加到视图控制器中:
@IBAction func buttonPressed(sender: UIButton) {
}
myButton.addTarget(self, action:self.buttonPressed(sender), for: .touchUpInside)
然后,您可以通过将此方法添加到视图控制器中,以编程方式添加选择器:
@IBAction func buttonPressed(sender: UIButton) {
}
myButton.addTarget(self, action:self.buttonPressed(sender), for: .touchUpInside)
或者转到“连接检查器”,从“内部润色”拖动到视图控制器代码中的iAction点。另外,正如其他人在评论中指出的,您应该通过将以下内容添加到类声明中,使您的按钮从UIButton继承:
class SelectButton: UIButton {
. . .
}
没有任何内容包含对
SelectButton
实例的强引用,因此一旦创建test
的函数退出,该实例就会被释放
按钮本身被保留,因为您已将其添加为子视图。因此,它仍然可见,但不再有对象响应该操作
对于
test
,您需要使用实例属性而不是局部变量,或者最好让SelectButton
直接从UIButton
继承,您是如何使用此类的?显示代码。为什么不将UIButton
子类化?我编辑了我的问题,因为我认为这比将UIButton
子类化要好,因为没有任何东西对您的SelectButton
实例有很强的引用,所以一旦创建test
的函数退出,该实例就会被释放。按钮本身被保留,因为您已将其添加为子视图,因此它仍然可见,但不再有对象响应该操作。确实SelectButton
应该子类UIButton
,然后您可以添加SelectButton
作为子视图。是的,您是对的。子类化ui按钮
解决了它。谢谢