SwiftBond v4系でアニメーションせずにUITableViewの更新ができるようになりました!


ViewBindingで有名なSwiftBondですが、つい3時間前にアニメーションせずにUITableViewとUICollectionViewの更新ができるようになりました。

実はこれ、v3系ではできていたんですが、Swift2.0にアップデートすると上げざるをえないv4系ではできなくなっていたんですね。。。

それが今日できるようになりました。よかった。

v4.3.0

Support for non-animatable collection/table view updates.

具体的なコードはこちら(要点のみ)

いつも通りtableViewにdataSourceをバインドして、、でも、今回は、proxyDataSourceを指定します。proxyDataSourceはBNDTableViewProxyDelegateに準拠している必要があります。

dataSource.bindTo(tableView, proxyDataSource: self) { (indexPath, dataSource, tableView) -> UITableViewCell in
    let string = dataSource[indexPath.section][indexPath.row]
    ...
    return cell
}

そして、BNDTableViewProxyDelegateのこちらのメソッドを実装します。

func shouldReloadInsteadOfUpdateTableView(tableView: UITableView) -> Bool {
    return true
}

「UITableViewのUpdateじゃなくて、Reloadを行う」って意味のメソッドです。これだけ!やった!

プルリク送りました

実はこれ僕がpull request送りました。ただ、議論の末にマージされた時点ではだいぶ形が変わりましたが、実現したいことは作者と同じでブレていなかったので最終的にマージされました〜。よかった!

v4系に上げてうまく動かないと苦しんでいる誰かのお役に立てれば!

SwiftBond

SwiftBond/Bond