2017-05-15 14 views
0

私は、アプリケーション内の他の場所からアクセスできるUIAlertControllerを含むいくつかの関数でヘルパークラスを使用していますが、ヘルパークラス自体からアクセスする際に問題があります。UIAlertController Swift 3.0でヘルパークラスを使用する

私は何の問題もそれを呼び出すことができ、クラスの外から
func showAlert(title: String, msg: String, controller: UIViewController) { 
     let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert) 
     let action = UIAlertAction(title: "OK", style: .default, handler: nil) 
     alert.addAction(action) 
     controller.present(alert, animated: true, completion: nil) 
    } 

:私はエラーを取得するクラス内からしかし

Helper.helper.showAlert(title: "Not Internet Detected", msg: "Data Connectivity is Required", controller: self) 

showAlert(title: "Email in use, did you use another method to register", msg: "please try again", controller: self) 

私が手にエラーがある:

この問題を解決する方法問題?ありがとう!

答えて

3

UIViewControllerインスタンスを3番目のパラメータとして渡す必要があります。 Helperクラス内のselfHelperではなく、UIViewControllerです。これは、コンパイラが不平を言っていることです。アラートは、ビューコントローラからのみ表示できます。

はあなたがUIViewControllerから継承する任意のクラスにメソッドを呼び出すことができUIViewController

extension UIViewController { 

    func showAlert(title: String, msg: String) { 
     let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert) 
     let action = UIAlertAction(title: "OK", style: .default, handler: nil) 
     alert.addAction(action) 
     self.present(alert, animated: true, completion: nil) 
    } 
} 

の拡張子を使用することを考えてみましょう。

関連する問題