Swift TableViewからの画面遷移後戻った時の元画面のTableViewリフレッシュ

#ViewController.swiftのTableViewのCellを選択し遷移し遷移したDetailViewController及びAddDetailViewControllerより戻った際にCallbackによりTableViewをUpdateする処理にハマってしまったのでその結果を投稿します。(Swif初心者です！！)

## 遷移元からは

```
遷移元処理
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var tableView: UITableView!

    var selectedItem: String?
    var selectedUrl: String?
    var links:[Links] = [Links]()
    override func viewDidLoad() {
        super.viewDidLoad()
           
        //テーブルセットアップ
        tableView.delegate = self
        tableView.dataSource = self

        //データベース処理等
        sql()
        
    }
    
    func updateTableView() {
        
        //データベース処理再実行配列初期化等
        links.removeAll()
        sql()
        // 再描画
        self.tableView.reloadData()
        
    }

    func sql(){
        //tableView配列データ全削除
        links2.removeAll()
    省略・・・・・・・・

    }
    
    func tableView(tableViewx: UITableView, numberOfRowsInSection section: Int) -> Int {
        return links.count // link数に変更
    }
    
    func tableView(tableViewx: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // IdentifierがLinkViewCellのセルを使いまわす
        let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("CustomCell")! as! CustomCell
        // cellの内容を設定
        cell.setCell(links[indexPath.row])
        return cell
    }
    
    // Cell が選択された場合
    func tableView(table: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
    	//TableViewCell選択にてlinks配列よりsendデータ取得
        selectedItem = String(links[indexPath.row].picid)
        selectedText=String(links[indexPath.row].picUrl)
        if selectedItem != nil {

            // SubViewController へ遷移するために Segue を呼び出す
            performSegueWithIdentifier("showDetailView",sender: nil)

        }
        
        
    }
    
    // Segue 準備(複数のsegueをif文で分岐)
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if (segue.identifier == "showDetailView") {

            let subVC: DetailViewController = (segue.destinationViewController as? DetailViewController)!
            // SubViewController のselectedImgに選択された画像を設定する
            subVC.sendtext = selectedText
            subVC.sendpicid = selectedItem
            //ここでCallbackの為のupdateTableViewを設定
            subVC.callBackAction = {self.updateTableView()}
        }
        else if(segue.identifier == "AddDetailView"){
            let addDetailViewController = (segue.destinationViewController as? AddDetailViewController)!
            addDetailViewController.callBackAction = { self.updateTableView() }
            
        }
    }

//ボタンにて遷移する場合
@IBAction func goDetailButton(sender: AnyObject) {

	let detailViewController = self.storyboard?.instantiateViewControllerWithIdentifier("showDetailView") as! DetailViewController
    detailViewController.callBackAction = { self.updateTableView() }    
    
self.presentViewController(detailViewController, animated: true, completion: nil)
    
}
    
    //省略・・・・・・・・・
}


    
//遷移先処理データ編集処理(データベースの更新あり) 
class DetailViewController: UIViewController {
    
    var callBackAction: (() -> Void)?
    
    　　//戻るボタンのAction設定
        @IBAction func retTopButton(sender: AnyObject) {
        
        self.dismissViewControllerAnimated(true, completion: {
            self.callBackAction?()
        })
        
    }
}

//遷移先データ追加処理(データベースの追加登録あり)
class AddnoteViewController: UIViewController {

    var postDismissionAction: (() -> Void)?

    @IBAction func retTopButton(sender: AnyObject) {
        
        self.dismissViewControllerAnimated(true, completion: {
            self.callBckAction?()
        })
    }
    //省略・・・・・・・・・
}