通过扩展 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...
我正在学习 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...