2017-05-16 11 views
0

ViewControllerクラスとストーリーボード(ボタンを使用して@IBActionを使用)でプログラムでボタンを作成する例がたくさんあります。異なるViewControllersで同じ動作をするカスタムUIButtonクラス

ボタンのカスタムクラスを作成し、すべての単一のViewControllerでこのアクションを書き換えずにサイドメニューを切り替える方法はありますか?

@IBAction func openMenuClick() { 
    sideMenuController?.toggle() 
} 

どのように私は、このコードの重複を避けることができます。

は今、私はストーリーボードに必要とコピー&ペーストこのコードを各VCには、このボタンを作成しますか?

答えて

2

このボタンはストーリーボード内のすべてのビューコントローラである場合、私はあなたには、いくつかの時点でそれを接続する必要がありますね。

UIViewControllerというサブクラスを作成することをお勧めします。これは、このボタンを持つすべてのビューコントローラの基本クラスです。各サブクラスのストーリーボードに接続するコンセントをベースクラスに作成する必要があります。

あなたが投稿したこのメソッドが基本クラスだけであり、ビューにロードされた場合、このメソッドにターゲットを手動で追加する必要があります。私は、基本的なビューコントローラがIBActionのようにこのメソッドを持っていれば、単にあなたのストーリーボードにその1つを接続することができると思います。

今メニューボタンのアクションのためにあなたはあなたが今、ボタンのtouchUpInside口をドラッグすることができ

extension UIViewController { 

@IBAction func btnActionBack(_ sender: UIButton) { 
    moveBack() 
} 

@IBAction func btnActionOpenSideMenu(_ sender: UIButton) { 
    toggleSideMenuView() 
} } 

ようIBActionを作成することができますが、すべてのビューコントローラのナビゲーションバー上のボタンを作成する必要がストーリーボードで

0

あなたが追加することができますが、ボタンのための一般的なクラスを作成します。

button.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside) 


func buttonAction(sender: UIButton!) { print("Button tapped") } 
1

、 IBActionへbtnActionOpenSideMenuへ。 私はこれを自分のために使用しました。また、ビューコントローラをポップするためのユニバーサルバックボタンアクションを作成しました。

関連する問題