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系に上げてうまく動かないと苦しんでいる誰かのお役に立てれば!