2017-02-02 7 views
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) 
} 

} 

私は '#selector' の引数」のようなエラーがインスタンスメソッドを指し得る

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

のViewControllerクラス内#selectorから "showMenu" 関数を呼び出す 'showMenu()' されていますObjective-Cに公開されていません "

答えて

0

属性の接頭辞を付けることによって、Objective-CにアクセスできるshowMenuメソッドを宣言する必要があります。

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

i「が@objc」プレフィックスを追加すると、私は 「@objc」以下のエラーがクラスのみ、「@objc」プロトコル、およびクラスの具体的な拡張のメンバーと一緒に使用することができます取得しています –

関連する問題