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

标签 ios swift class uibutton extend

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

关于ios - 通过扩展 UIButton 类,使用 Swift 创建自定义按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32565698/

相关文章:

swift - Firebase 规则中有关 indexOn 的恼人问题

ios - 如何从 NSFetchedResultsController 获取有限制的最新对象?

ios - 将项目附加到字典中的数组不起作用

objective-c - 如何向 Xcode 4.3.1 中的类添加操作或导出?

python - 为什么要修改类属性?

ios - 游戏中心 : "The connection to service named com.apple.gamed was interrupted"

ios - 如何区分应用程序 didRecieveLocalNotification 中的两个 uilocalnotification 并在 ios 中触发相应的警报?

ios - 在 UITableView 中显示可用的蓝牙列表

ios - 如何在 react 导航中截断 headerTitle 的 'back' 按钮?

c++ - 使用带有 wxWidgets 的 mysql lib 的类崩溃