【Swift】UIAlertControllerのActionをクロージャで処理したくない　まとめ

##概要
[【Swift】UIAlertControllerのActionをクロージャで処理したくない](http://qiita.com/tdaiku/items/6a2e0c65522d74f642c9)
[【Swift】UIAlertControllerのActionをクロージャで処理したくない2](http://qiita.com/tdaiku/items/d7d9afa06ab9943ed58e)

というわけで目的としては
・UIAlertControllerを利用を簡潔にしたい
・連続でAlertを呼び出し可能にしたい。（Alertで質問への回答など）

です。
とりあえず動くことまで確認出来たので、UIAlertControllerについては以上とします。


###共通ロジック
```swift:Common/Alert.swift
import UIKit

protocol AlertDelegate{
    func alertClose(title:String)
}

/*
利用時
1．AlertDelegateプロトコルを適合する。
2．title,messageを設定してdefaultActionArrayに設定したいラベル(String)をappendする。
3．preferredStyleにAlertかActionSheetが設定可能
4．isHaveCancelでキャンセルが必要か設定可能
5．showAlertControllerをCallする

TODO
・メンバ変数はprivateにすべき
・isHaveCancelって名前おかしくないか？
・もっとスマートにかけないか

*/
class Alert{
    
    //イニシャライザ
    convenience init(){
        self.init(title: "default",message: "default")
    }
    
    convenience init(title:String,message:String){
        self.init(title: title,message: message,preferredStyle: UIAlertControllerStyle.Alert)
    }
    
    init(title:String,message:String,preferredStyle:UIAlertControllerStyle){
        self.title = title
        self.message = message
        self.preferredStyle = preferredStyle
    }
    
    var delegate:AlertDelegate!
    
    //Alert表示設定項目
    var isHaveCancel:Bool = true;
    var title:String = "";
    var message:String = "";
    var preferredStyle:UIAlertControllerStyle = UIAlertControllerStyle.Alert
    
    var defaultActionArray:[String] = Array()
    
    func showAlertController(view:UIViewController){
        var alert:UIAlertController = UIAlertController(title:title,
            message: message,
            preferredStyle: preferredStyle)
        
        //キャンセルアクションの追加
        if(isHaveCancel){
            let cancelAction:UIAlertAction = UIAlertAction(title: "キャンセル",
                style: UIAlertActionStyle.Cancel,
                handler:{
                    (action:UIAlertAction!) -> Void in
                    self.delegate.alertClose("キャンセル")
            })
            
            alert.addAction(cancelAction)
        }
        
        //defaultアクションの追加
        for defaultTitle in defaultActionArray{
            let defaultAction:UIAlertAction = UIAlertAction(title: defaultTitle,
                style: UIAlertActionStyle.Default,
                handler:{
                    (action:UIAlertAction!) -> Void in
                    self.delegate.alertClose(defaultTitle)
            })
            alert.addAction(defaultAction)
        }
        
        view.presentViewController(alert, animated: true, completion: nil)
    }
}
```

###利用クラス
```swift:CallFrom.swift
import UIKit

class ViewController: UIViewController,AlertDelegate {

    // ボタンイベント.
    func onClickMyButton(sender: UIButton){
        self.alertCallFirst()
    }

    var alertAction:(String) -> () = {(title:String) -> () in
        println("not impliment")
    }
    
    func alertClose(title:String) {
        self.alertAction(title)
    }
    
    private func alertCallFirst(){
        
        //Actionの表示名とわかりやすい名称をつける
        let ACTION_VAL1 = "VAL1"
        let ACTION_VAL2 = "VAL2"
        let ACTION_VAL3 = "VAL3"
        
        var alert = Alert(title: "",message: "",preferredStyle: UIAlertControllerStyle.ActionSheet)
        alert.delegate = self
        alert.isHaveCancel = false

        alert.defaultActionArray.append(ACTION_VAL1)
        alert.defaultActionArray.append(ACTION_VAL2)
        alert.defaultActionArray.append(ACTION_VAL3)
        
        self.alertAction = {(title:String) -> () in
            switch title{
            case ACTION_VAL1:
                break
            case ACTION_VAL2:
                self.alertCallSecond()
                break
            case ACTION_VAL3:
                break;
            default:
                break;
            }
        }
        
        alert.showAlertController(self)
    }
    
    private func alertCallSecond(){
        //呼び出し処理
    }
    
}
```


##まとめ
今回初めてiOSのアプリの開発をしており、実機はiphone5sを利用してます。
アラートが思ったより小さくて押しづらいのではないか？という不安がとりあえず。
わからないことだらけで文法とか調べながらですが、なかなか面白いですね。