美文网首页iOS Coding
Swift3.0中Selector的变化

Swift3.0中Selector的变化

作者: 看我的大白眼 | 来源:发表于2016-11-01 13:46 被阅读787次

    这篇博客发布的有点晚,最近项目中使用了Swift3.0,发现Selectors又有新的变化,决定更新一下博客

    Selectors

    之前有学习过Swift,但是项目中一直没有使用,所以好长时间没有接触了,最近时间比较多,打算使用Swift仿一款APP.在使用过程中发现了一些语法的变化,特此记录下来

    在之前的版本中, selector直接传入字符串,并且没有自动补全功能

     let button = UIButton(type: .Custom)
     button.addTarget(self, action: "buttonClick:", forControlEvents: .TouchUpInside)
     func buttonClick(sender: UIButton) {}
    
    

    但是现在如果还是这么写的话,就会有警告,如下:


    selector

    然后就在SwiftGG中发现Swift:Selector 语法糖这篇博客,在里面做了详细的说明.

    [转]在Swift中的优化

     button.addTarget(self, action: #selector(XNHomeController.buttonClick(_:)), forControlEvents: .TouchUpInside)
    

    在浏览代码的时候,上面这句代码简直不忍直视,太长,可读性也很差.
    让我们来整合一下这些 selector,这样需要时可以直接引用,并且可以在同一个地方修改。

    整合方式一

        private struct Action {
            static let buttonClick = #selector(XNHomeController.buttonClick(_:))
        }
        button.addTarget(self, action: Action.buttonClick, forControlEvents: .TouchUpInside)
    

    整合方式二

    private extension Selector {
        static let buttonClick = #selector(XNHomeController.buttonClick(_:))
        
    }
     button.addTarget(self, action: Selector.buttonClick, forControlEvents: .TouchUpInside)
    

    示例代码

    Swift3.0的新写法

    let button = UIButton(type: .Custom)
    button.addTarget(self, action: #selector(bottomButtonClick), for: .touchUpInside) 
    func bottomButtonClick(sender: UIButton){ }
    

    相关文章

      网友评论

        本文标题:Swift3.0中Selector的变化

        本文链接:https://www.haomeiwen.com/subject/jnsmuttx.html