2017-11-14 4 views
-2

現在、私はプロジェクトを進めています。ほとんどの場合、すべてのView Controllerでアラートメッセージを使用する必要があります。特にこの1つ:ファイル内の関数または変数を宣言し、Swiftで常に使用する方法

同じコードを繰り返し使用すると、コードが冗長になります。このシナリオには、他の関数や変数もあります。どのようにしてこの関数を別のファイルのどこかに宣言し、必要に応じていつでも使用できますか?

static let sharedInstance = viewController() 

このような場合は、私に例を示してください。

extension UIViewController { 
    func showMessage(myMessage: String) { 
     let myAlert = UIAlertController(title: "ALERT", message: myMessage, preferredStyle: UIAlertControllerStyle.alert) 
     let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil) 
     myAlert.addAction(okAction) 
     self.present(myAlert, animated: true, completion: nil) 
    } 
} 

あなたがのUIViewControllerのサブクラス任意のクラスでそれを使用することができるこの方法を:

答えて

2

これを行うための最善の方法は、次のような拡張機能を使用しています。また、関数を "グローバル関数"として素早くファイルにドロップすることもできますが、あまりクリーンではありません。

+0

ありがとう、私は馬鹿のような延長を見落としていました。 –

+0

@ArafinRussellよろしくお願いします!がんばろう! – Shawn

0

アプリ内のビューコントローラにカスタムクラスを使用します。 UIViewControllerをサブクラス化する代わりに、各ビューコントローラはCustomViewControllerクラスをサブクラス化します。ここでは例を示します。

class CustomViewController: UIViewController { 
    func showMessage(myMessage: String) { 
     let myAlert = UIAlertController(title: "ALERT", message: myMessage, preferredStyle: UIAlertControllerStyle.alert) 
     let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil) 
     myAlert.addAction(okAction) 
     self.present(myAlert, animated: true, completion: nil) 
    } 
} 

各ビューコントローラは、あなたはサブクラスがCustomViewControllerその後、showMessage機能へのアクセス権を持っているだろうと作成します。

2

あなたの関数showMessage(myMessage :)はすべてのViewControllerに共通です。だから、次のいずれかです。

  • は、スーパークラスのViewControllerを使用して、そこにあなたの関数を実装します。

    class BaseViewController { 
        func showMessage(myMessage: String) { ... } 
    } 
    
  • 使用迅速なプロトコル:

    protocol MessageHelper {} 
    
    extension MessageHelper where Self: UIViewController { 
        func showMessage(myMessage: String) { ... } 
    } 
    
    extension MyViewController: MessageHelper {} 
    

を共有インスタンスを使用してすべてのあなたのメッセージを処理する別の方法かもしれません。

メッセージを表示する必要があるときは、ちょうどMessageController.shared.showMessage(myMessage:viewController:)を呼び出してください。

メッセージコントローラを使用すると、表示されるメッセージの数を数えたり、同じ場所と1か所に表示するメッセージをフィルタリングすることができます。

関連する問題