Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 通过扩展UIButton类,使用Swift创建自定义按钮_Ios_Swift_Class_Uibutton_Extend - Fatal编程技术网

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

Ios 通过扩展UIButton类,使用Swift创建自定义按钮,ios,swift,class,uibutton,extend,Ios,Swift,Class,Uibutton,Extend,我正在学习Swift,我有一个基本的问题。我不想使用故事板,我想用代码创建一个按钮。目前,我的按钮编码如下: let button1: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton button1.setImage(UIImage(named: "myImage.png"), forState: UIControlState.Normal) button1.addTarget(self, action: "

我正在学习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
这是可行的,但我在寻找稍微不同的东西。也就是说:我想创建一个类,我想至少传递图像名、按钮必须调用的方法和帧。此外,我想随时在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
    }

}
添加以改进评论

它就像嵌套在另一个类中的类一样“接合”,但它确实是一种声明类方法的快捷方式

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

class SPBarButtonFactory...
class func createBarButtonItemOfType...
此行声明了SPBarButtonFactory的类方法

class SPBarButtonFactory...
class func createBarButtonItemOfType...

这对你有意义吗?或者我应该更详细地描述它吗?没关系,我只是有点惊讶地看到一个类嵌套在另一个类中:-)好的,我这样安装它,它工作得很好,谢谢:
let btn=SPBarButtonFactory.createBarButtonTimeType(.openDrawer,with target:self,and action:“none”)self.navigationItem.rightBarButtonItem=btn
是,这是正确的方法。。。玩得开心,看看我添加的内容。。。知道很重要!!!:-)是的,但实例方法不是我的答案中描述的。。。你看到的是类方法,不是实例方法。。。但是你在那里的文件是正确的一个完全了解它。。。所以你走的很好:-)