我有一个名为menudisplayable的协议类。这个协议有一个扩展名。
protocol MenuDisplayable {}
extension MenuDisplayable where Self: UIViewController {
func showMenu( ) {
let storyboard = UIStoryboard(storyboard: .Menu)
let menuVC = storyboard.instantiateInitialViewController() as! MenuVC
present(menuVC, animated: true, completion: nil)
}
}
当我从viewcontroller类中的选择器调用“showmenu”函数时
let rightButton = UIBarButtonItem(image: #imageLiteral(resourceName: "icon_hamb").withRenderingMode(.alwaysTemplate), style: .plain, target: self, action: #selector(StorySelectCarouselVC.showMenu) )
我得到一个错误,比如“selector的参数引用了实例方法showmenu()”,它没有暴露给objective-c”
最佳答案
你需要用Objy-C来声明你的showMenu
方法,它是用objc
属性预先设置的。
@objc func showMenu() {
// ...
}
关于swift - 从选择器调用协议(protocol)扩展功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41998656/