web-dev-qa-db-ja.com

tableView.reloadDataとtableView.reloadRowsの違いは何ですか?

tableView.reloadData()tableView.reloadRows(at: [IndexPath],with: .none)の違いは何ですか?

セルはtableView.reloadData()の後にすべてをリロードすることを知っています


以下を試しました。

_cell.count = 2
_

indexPath = _[0,0]_および_[0,1]_

_tableView.reloadRows(at: [[0,0] as IndexPath],with: .none)
tableView.reloadRows(at: [[0,1] as IndexPath],with: .none)
_

しかし、期待通りの結果にはなりませんでした。

すべてのtableView.reloadRows()をセルでリロードする場合と、tableView.reloadData()を使用してリロードする場合で、動作は異なりますか?

5
Junya Kono

これについてはAppleドキュメントをチェックしてください-

1。 reloadData():

テーブルビューの行とセクションを再読み込みします。

説明:このメソッドを呼び出して、セル、セクションヘッダーとフッター、インデックス配列など、テーブルの作成に使用されるすべてのデータを再読み込みします。 。効率を上げるために、テーブルビューには、表示されている行のみが再表示されます。リロードの結果としてテーブルが縮小した場合、オフセットを調整します。テーブルビューのデリゲートまたはデータソースは、テーブルビューにデータを完全に再読み込みさせたいときに、このメソッドを呼び出します。特にbeginUpdates()とendUpdates()の呼び出しで実装されたアニメーションブロック内では、行を挿入または削除するメソッドで呼び出さないでください。

2。 reloadRows(at:with :):

アニメーション効果を使用して、指定された行を再読み込みします。

説明

行を再ロードすると、テーブルビューはそのデータソースにその行の新しいセルを要求します。テーブルは、古い行をアニメーション化するときに、その新しいセルをアニメーション化します。セルの値が変化していることをユーザーに警告する場合は、このメソッドを呼び出します。ただし、ユーザーへの通知が重要でない場合(つまり、セルに表示されている値を変更したい場合)は、特定の行のセルを取得して、その新しい値を設定できます。

このメソッドがbeginUpdates()メソッドとendUpdates()メソッドで定義されたアニメーションブロックで呼び出されると、deleteRows(at:with :)と同様に動作します。 UITableViewがメソッドに渡すインデックスは、更新前のテーブルビューの状態で指定されます。これは、アニメーションブロック内のメソッド呼び出しの挿入、削除、および再読み込みの順序に関係なく発生します。

https://developer.Apple.com/documentation/uikit/uitableview/1614862-reloaddatahttps://developer.Apple.com/documentation/uikit/uitableview/1614935-reloadrows

4
Daniel Isaac