

Swiftにて、UITableViewの読み込みが完了したことを検知したいのですが、  
<http://qiita.com/corocorococoro/items/1c80681cd7e1fddc3ba3>  
を参考に、

[code]

    extension UITableView {
    　・・・
    }
    
[/code]

で書いてみようとしたのですが、上記参考URLの

[code]

    - (void)reloadDataAndWait:(void(^)(void))waitBlock {
        [self reloadData];
        if (waitBlock) {
            waitBlock();
        }
    }
    
[/code]

をSwiftでどのように書いたらいいかわかりません。


CC BY-SA 3.0
2016-11-07T09:44:09.307
30184
2016-11-07T14:05:24.867
2016-11-07T14:01:41.663
5519
19467
question
swift objective-c
Swiftで引数にクロージャを渡すときの書き方


Swiftにそのまま移植すると下記になります。

[code]

    extension UITableView {
        func reloadDataAndWait(waitBlock: (() -> ())?) {
            reloadData()
            if let waitBlock = waitBlock {
                waitBlock()
            }
        }
    }
    
[/code]

使い方は次のようになりますが、

[code]

    tableView.reloadDataAndWait { 
        NSLog("numberofsection %d", self.tableView.numberOfSections)
    }
    
[/code]

リンク先のさらに先のStackOverflowの回答のコメントにもあるように、このコードは、

[code]

    tableView.reloadData()
    NSLog("numberofsection %d", self.tableView.numberOfSections)
    
[/code]

と`reloadData()`の後に続けて処理を書いてるのと全く同じ意味です。  
なのでわざわざこのようなメソッドを作る意味はありませんよ。


CC BY-SA 3.0
2016-11-07T14:05:24.867
30191
2016-11-07T14:05:24.867
5519
30184
answer