通过扩展 UIButton class 使用 Swift 创建自定义按钮

Create custom button with Swift by extending the UIButton class

我正在学习 Swift,我有一个基本问题。我不想使用故事板,而是想用代码创建一个按钮。目前,我这样编写我的按钮:

let button1: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
button1.setImage(UIImage(named: "myImage.png"), forState: UIControlState.Normal)
button1.addTarget(self, action: "myMethod", forControlEvents: UIControlEvents.TouchUpInside)
button1.frame = CGRectMake(0, 0, 25, 25) // then I add this button to a navigation control

这行得通,但我正在寻找稍微不同的东西。即:我想创建一个class,我想至少传递图像名称、按钮必须调用的方法和框架。此外,我想随时在 ViewController 中实例化按钮。

我在这里找到了很多 post,但没有 post 真的有用(有些代码不起作用)。

你能帮帮我吗?

enum SPBarButtonTypes {
    case openDrawer
    case loginInfo
}

class SPBarButtonFactory: NSObject {

    class func createBarButtonItemOfType (buttonType: SPBarButtonTypes, withTarget buttonTarget: AnyObject, andAction buttonAction: Selector) -> UIBarButtonItem {
        var returnButton: UIBarButtonItem = UIBarButtonItem()
        returnButton.target = buttonTarget
        returnButton.action = buttonAction

        switch buttonType {
            case .openDrawer:
                returnButton.image = UIImage(named: "ic_menu")
            case .loginInfo:
                returnButton.image = UIImage(named: "ic_info_outline")
        default: NSLog("Wrong BarButton type")
        }

        return returnButton
    }

}

已添加以改进评论

它只是 "seams" 就像一个 class 嵌套在另一个 class 中,但它确实是 Swifts 声明 class 方法的方式....

这一行声明了一个 class 名为 SPBarButtonFactory

class SPBarButtonFactory...

这一行声明了 SPBarButtonFactory

的 class 方法
class func createBarButtonItemOfType...