我正在学习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...