2017-07-06 3 views
2

UIAlertControllerを起動するユーティリティクラスに配置できる静的メソッドを作成したいとします。しかし、私は次のエラーを取得しています: 静的メソッドを与える静的メソッドのUIAlertController:余分な引数をセル内でアニメーション

static func simpleAlertBox1(msg : String) -> Void{ 
    let alertController = UIAlertController(title: "Alert!", message: msg, preferredStyle: .actionSheet) 
    let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil) 
    alertController.addAction(defaultAction) 
    present(alertController, animated: true, completion: nil)// error is being generated here 
} 

"extra argument animated in cell"

は、私はこれを試みたが、それはまだ私に同じエラーました:

presentViewController(alertController, animated: true, completion: nil) 

を私はstaticを削除した場合、それは動作します良い。

+0

'present'は' UIViewController'のインスタンスメソッドです。ビューコントローラのインスタンス上で呼び出す必要があります。あなたは1つ持っていますか? – rmaddy

+0

比較https://stackoverflow.com/questions/38144019/how-to-create-uialertcontroller-in-global-swift and https://stackoverflow.com/questions/26554894/how-to-present-uialertcontroller-when-ビューコントローラではありません。 –

+0

なぜ静的キーワードを使用しているのですか?それは迅速な構文の一部ではありません。 –

答えて

0

selfはUIViewControllerのインスタンスです。静的な方法でこの関数を呼び出す場合は、表示する他のparam viewcontrollerを追加するだけです。非常に重要を表示する必要があります。

:ここのviewDidLoad

例のコードの後に​​あなたのalertView

+0

YourPresentedViewControllerは何ですか?私はタイプしますか:自己ですか? – monekypox121

+0

あなたのケースではYourPresentedViewControllerは自己と同じです。 他のオプションは、UIViewControllerの拡張を作成することです。 ps:メールを確認してください。 –

+0

私は自己を試みたが、それは私にエラーを与えた:self.simpleAlertBox(msg: "heelo"、viewController:self)//期待される宣言エラー – monekypox121

1

メソッドpresent(_:animated:completion:)は、UIViewControllerのインスタンスメソッドです。そのメソッドをUIViewControllerの特定のインスタンスに送信する必要があります。関数を静的関数にすることで、クラスのインスタンスではなくクラスの関数になります。

(「ラジオステーションを99.5 FMに設定する」というメッセージを自動車工場に送信するようなものです。そのメッセージは車の工場に送られたときだけ意味を持ち、自動車工場やトヨタプリウス全体には送信されません

+0

私はあなたを正しく理解している場合、UIViewControllerに属しているため、静的メソッドでpresentメソッドを使用することはできません。したがって、静的メソッドでUIAlertを使用することはできません。 – monekypox121

+0

@ monekypox121 'static'メソッドに' present'メソッドがありますが、暗黙的に 'self'メソッドで呼び出すことはできません。特定のView Controllerインスタンスで呼び出す必要があります。 OK – rmaddy

+0

は、私は次のように私のコードを変更: simpleAlertBox1(MSG:文字列)FUNC静的 - > UIAlertController { がalertController = UIAlertController(タイトル: "!アラート"、メッセージ:MSG、preferredStyle:.actionSheet)しましょう LET DEFAULTACTION = UIAlertAction(タイトル: "OK"、スタイル:.DEFAULT、ハンドラ:ゼロ) alertController.addAction(DEFAULTACTION) } 存在(simpleAlertBox1(MSG alertController リターン: "自衛隊")、アニメーション: true、completion:nil)しかし、今ではエラーが発生しています: "期待される宣言" – monekypox121

関連する問題