2
votes

i have protocol class named MenuDisplayable. This protocol has an extension.

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)
 }

}

When i call "showMenu" function from #selector inside viewController class

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

i get an error like "Argument of '#selector' refers to instance method 'showMenu()' that is not exposed to Objective-C"

1

1 Answers

0
votes

You need to declare your showMenu method accessible to Objective-C by prefixing it with the objc attribute.

@objc func showMenu() {
    // ...
}