ios - #UIBarButtonItem 上的选择器

标签 ios swift selector uibarbuttonitem

我正在使用 Swift 2.2 开发我的第一个 iOS 应用程序,我遇到了以下问题。 在实用程序类中,我有以下静态方法,由一些不同的 UIViewController 调用。

static func setNavigationControllerStatusBar(myView: UIViewController, title: String, color: CIColor, style: UIBarStyle) {
    let navigation = myView.navigationController!
    navigation.navigationBar.barStyle = style
    navigation.navigationBar.barTintColor = UIColor(CIColor: color)
    navigation.navigationBar.translucent = false
    navigation.navigationBar.tintColor = UIColor.whiteColor()
    myView.navigationItem.title = title
    
    let menuButton = UIBarButtonItem(image: UIImage(named: "menu"),
                                 style: UIBarButtonItemStyle.Plain ,
                                 target: self, action: #selector("Utils.menuClicked(_:)"))
    
    myView.navigationItem.leftBarButtonItem = menuButton
}

func menuClicked(sender: UIButton!) {
    // do stuff
}

我正在尝试以一些不同的方式为这个按钮关联一个#selector,但是我总是有以下错误。

enter image description here

最佳答案

没有引号。

#selector(Utils.menuClicked(_:))

func menuClicked 应该在您的 View Controller 类中。但如果由于某种原因不是,你可以这样做

class Utils {
    static let instance = Utils()

    let menuButton = UIBarButtonItem(image: UIImage(named: "menu"),
                                     style: UIBarButtonItemStyle.Plain ,
                                     target: Utils.instance, action: #selector(Utils.menuClicked(_:)))

    @objc func menuClicked(sender: UIBarButtonItem) {
        // do stuff
    }
}

关于ios - #UIBarButtonItem 上的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951073/

相关文章:

ios - Swift - 将二进制文件发送到服务器(转换为字符串请求)

iphone - 如何调用带有 2 个以上参数的参数化方法到选择器

ios - 如何在 NSUserDefaults 中设置数组的数组?

Swift 动态选择器调用(旧的 performSelector :)

swift - '#selector' 的参数不引用 '@objc' 方法、属性或初始值设定项

ios - 代码 8 : Cannot inherit from non-open class

ios - 无法将 Parse.com 中存储的 NSData 转换为 NSString?

ios - React native - ios 中的 rtl

ios - 如何表示 nil Error Swift 完成 block

ios - 使用数据内容播放视频而不保存