ios - Swift 自定义按钮类

标签 ios swift swift3

我正在尝试创建一个创建按钮的自定义类。我在向其类中的该按钮添加目标时遇到问题。这是我的代码

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/

相关文章:

arrays - 将结构数组(带日期)拆分为按月分组的二维数组

当 key 不是字符串时,iOS HTTP Post 方法不起作用

ios - 在不影响存储对象的情况下更改值 - Realm swift

ios - 为什么 EmptyView() 不能在带有 SwiftUI 的 WatchOS 上运行?

ios - 对具有字符串文字和 NSObject 下标类型的下标的引用不明确

swift - 如何导入特定网页上托管的特定 Swift 类/模块?

ios - 如何在 Swift3 中执行 timeIntervalSinceNow?

ios - 在 xcode spriteKit 游戏中的按钮上运行动画

ios - NSURLConnectionLoader(7) :EXC_BAD_ACCESS

ios - 初始化程序与默认属性值