いろいろなところから呼び出せるUIAlertの作り方


UIAlertをいろいろなところから呼び出し可能にしたいと思っています。  
例えば

[code]

    MyAlert.show()
    
[/code]

といった感じに。

下記のようなクラスを作って表示させるのは作法としておかしいでしょうか？  
特にrootViewControllerを呼び出している辺りについてどうするのが適切でしょうか？

[code]

    import UIKit
    
    class MyAlert {
    
        class func show(){
    
            let alertTitle = "アラート"
            let alertMsg = "サンプルアラートです。"
    
            let alertController: UIAlertController = UIAlertController(title: alertTitle, message: alertMsg, preferredStyle: .Alert)
    
            let cancelAction: UIAlertAction = UIAlertAction(title: "キャンセル", style: .Cancel) { action -> Void in
                //nothing
            }
            alertController.addAction(cancelAction)
    
            let submitAction: UIAlertAction = UIAlertAction(title: "OK", style: .Default) { action -> Void in
                //something to do
            }
            alertController.addAction(submitAction)
            var rootvc = UIApplication.sharedApplication().keyWindow?.rootViewController
            rootvc!.presentViewController(alertController, animated: true, completion: nil)
        }
    }
    
[/code]




わたしなりの考え方で、手を加えてみました。

[code]

    import UIKit
    
    class MyAlert {
    
        class func show(fromViewController viewController: UIViewController){
    
            let alertTitle = "アラート"
            let alertMsg = "サンプルアラートです。"
    
            let alertController: UIAlertController = UIAlertController(title: alertTitle, message: alertMsg, preferredStyle: .Alert)
    
            let cancelAction: UIAlertAction = UIAlertAction(title: "キャンセル", style: .Cancel) { action -> Void in
                //nothing
            }
            alertController.addAction(cancelAction)
    
            let submitAction: UIAlertAction = UIAlertAction(title: "OK", style: .Default) { action -> Void in
                //something to do
            }
            alertController.addAction(submitAction)
    
            viewController.presentViewController(alertController, animated: true, completion: nil)
        }
    }
    
[/code]

View Controllerの実装内で呼び出す場合は、

[code]

    MyAlert.show(fromViewController: self)
    
[/code]

このように引数にselfを渡します。




わたしなりの考え方で、手を加えてみました。

[code]

    import UIKit
    
    class MyAlert {
    
        class func show(fromViewController viewController: UIViewController){
    
            let alertTitle = "アラート"
            let alertMsg = "サンプルアラートです。"
    
            let alertController: UIAlertController = UIAlertController(title: alertTitle, message: alertMsg, preferredStyle: .Alert)
    
            let cancelAction: UIAlertAction = UIAlertAction(title: "キャンセル", style: .Cancel) { action -> Void in
                //nothing
            }
            alertController.addAction(cancelAction)
    
            let submitAction: UIAlertAction = UIAlertAction(title: "OK", style: .Default) { action -> Void in
                //something to do
            }
            alertController.addAction(submitAction)
    
            viewController.presentViewController(alertController, animated: true, completion: nil)
        }
    }
    
[/code]

View Controllerの実装内で呼び出す場合は、

[code]

    MyAlert.show(fromViewController: self)
    
[/code]

このように引数にselfを渡します。

