2017-08-16 11 views
0

私のアプリの最初の草案では、NSTableViewに静的配列を埋めました。 私はこのようなアニメーション効果を持つ新しい行を挿入しNSButton、持っていた:この時点でアニメーション効果付きスウィフト挿入行

tableView.beginUpdates() 
tableView.insertRows(at: IndexSet(integer: tableview.numberOfRows), withAnimation: .effectFade) 
tableView.endUpdates() 

短い質問を: は、私はbegin-/endUpdates()コマンドが必要ですか? このコードを使用するかどうかは、今のところ違いがわかります。

主要な問題:

今私の第二のドラフト:

は、今私はコアデータからテーブルビューのために自分のデータをフェッチします。 新しい行を挿入するためにNSButtonをクリックした場合、私は別のことをします。新しいレコードを作成し、コアデータに保存し、すべてのデータを再度フェッチし、TableViewをリロードします。

これはうまくいきますが、2行目の草稿でこの行を使用することはできません。

tableView.insertRows(at: IndexSet(integer: tableview.numberOfRows), withAnimation: .effectFade) 

もう一度この「美しい」アニメーションをコアデータとともに使用することはできますか?

+0

どのようにデータをテーブルビューにバインドしていますか? – Abizern

+0

はココア結合ではない。私はテーブルビュー機能を使用しています – Ghost108

+0

代わりにCocoa Bindingsを使うほうが簡単かもしれません。コアデータはこのように使用するように設計されています。 iOS上のNSFetchedResultsControllerは、そのプラットフォームにCocoa Bindingsが存在しないために開発されました。 – Abizern

答えて

0

短い質問:1回の挿入/削除/移動操作にはbeginUpdates()/endUpdates()は必要ありません。複数の同時操作にのみ必要です。

第1次問題reloadData()にはアニメーションが表示されません。 の代わりに...すべてのデータを再度取得するテーブルビューオブジェクトをテーブルビューに挿入してinsertRows(atを挿入します。アニメーションを示すテーブルビューを更新します。