通过扩展UIButton类,用Swift创建自定义按钮



我正在学习Swift,我有一个基本的问题。我不想用Storyboard,我想用代码创建一个按钮。现在,我这样编码我的按钮:

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

这个工作,但我正在寻找一些稍微不同的东西。也就是说,我想创建一个类,我想传递至少图像名称,按钮必须调用的方法和帧。此外,我想在我的ViewController中实例化按钮。

我在这里发现了很多帖子,但没有一个是真正有用的(一些代码不工作)。

你能帮我吗?

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
    }
}

添加以改进注释

它只是看起来像一个类嵌套在另一个类中,但这确实是swift声明一个类方法....的方式

这一行声明了一个名为SPBarButtonFactory的类

class SPBarButtonFactory...

这一行声明了SPBarButtonFactory的一个类方法

class func createBarButtonItemOfType...

最新更新