シーケンスでは、リスト データ (NSMUtableArray) 内の特定のオブジェクトのみを更新し、その値を更新したら、GUI を更新するために、以下のようにテーブル全体をリロードしました...
[table reloadData];
それは正常に機能しましたが、効率の点で、スクロール中に少しハングしています。テーブル全体をリロードせずに特定のセルのみを更新する方法はありますか?
ありがとう。
シーケンスでは、リスト データ (NSMUtableArray) 内の特定のオブジェクトのみを更新し、その値を更新したら、GUI を更新するために、以下のようにテーブル全体をリロードしました...
[table reloadData];
それは正常に機能しましたが、効率の点で、スクロール中に少しハングしています。テーブル全体をリロードせずに特定のセルのみを更新する方法はありますか?
ありがとう。
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
これを使って
これを使用できます..
NSArray *indexPathArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
//You can add one or more indexPath in this array...
[tblview reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];
セルオブジェクトは次の方法で取得できます-
UITableViewCell *cell = [table cellForRowAtIndexPath:indexPath];
データ配列からオブジェクトごとに関連する値を変更します。表に反映する必要があります。お役に立てれば。
index path を使用して、特定の画像行をリロードできます。
[mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
GUI の更新を行っているため、他の方法を使用するよりも reloadData を使用することをお勧めします。reloadData は、UITableView
不整合を回避するため、更新する場合に最適な方法です。他にできることは、条件を追加して、cellForRowAtIndexPath
変更されたセルに対してのみ実行を発生させることです。
1 つのアイテムを追加するだけで、それをテーブルに追加したい場合は、UITableView に手動で挿入できます。例を次に示します。
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_directions.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:YES];