2

我有名为 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 类中的#selector 调用“showMenu”函数时

let rightButton = UIBarButtonItem(image: #imageLiteral(resourceName: "icon_hamb").withRenderingMode(.alwaysTemplate), style: .plain, target: self, action: #selector(StorySelectCarouselVC.showMenu) )

我收到一个错误,例如“'#selector' 的参数是指未暴露给 Objective-C 的实例方法 'showMenu()'”

4

1 回答 1

0

您需要通过在属性showMenu前面加上前缀来声明 Objective-C 可以访问的方法。objc

@objc func showMenu() {
    // ...
}
于 2017-02-02T09:59:38.610 回答