2017-06-26 7 views
1

2つのwebviewコントローラを含む10のビューコントローラを持つアプリケーションを開発しています。すべてのView Controllerには、同じスタイルと機能を備えた右上に「フィードバックを送信」ボタンが含まれています。 今、私はボタンの各ビューコントローラに全く同じコードを書いています。 関数が同じであるため、メソッドを1つの場所に書き込んですべてのボタンに使用する方法があるのだろうかと思っていました。 私はスイフト3を使用しています。iosアプリケーションのすべてのビューコントローラの同じボタン

答えて

1

ビューコントローラの新しいサブクラスを作成します。

class SendFeedbackViewController: UIViewController { 
    @IBOutlet weak var sendFeedbackButton: UIButton! 

    @IBAction func sendFeedback() { 
     /* do whatever you need */ 
    } 
} 

次に、この新しいビューコントローラからすべてのビューコントローラのサブクラス:今すぐ enter image description here

:ストーリーボードセットクラス型で

class YourViewController: SendFeedbackViewController { 
    /* your entire logic */ 
} 

送信フィードバックボタンのアウトレットとアクションを接続することができます: enter image description here enter image description here

2

UIViewControllerの拡張機能を使用してください。

extension UIViewController { 
    func sendFeedBack() { 
    //write your code here 
    } 
} 

任意のViewControllerから呼び出します。

+2

これを行うには拡張子を使用することをおすすめしますが、最初にUIViewControllerをサブクラス化してサブクラスに拡張子を置く方がよい場合があります。 –

関連する問題