Swift 从选择器调用协议扩展函数
我有一个名为MenuDisplayable的协议类。这个协议有一个扩展Swift 从选择器调用协议扩展函数,swift,swift3,protocols,protocol-extension,Swift,Swift3,Protocols,Protocol Extension,我有一个名为MenuDisplayable的协议类。这个协议有一个扩展 protocol MenuDisplayable {} extension MenuDisplayable where Self: UIViewController { func showMenu( ) { let storyboard = UIStoryboard(storyboard: .Menu) let menuVC = storyboard.instantiateInitialViewControll
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) )
我得到了一个错误,如“参数“#选择器”引用了未向Objective-C公开的实例方法“showMenu()”您需要声明您的
showMenu
方法,该方法可以通过使用objc
属性作为前缀来访问Objective-C
@objc func showMenu() {
// ...
}
当我添加“@objc”前缀时,我得到下面的错误“@objc”只能用于类的成员、“@objc”协议和类的具体扩展