2013-10-21 15 views
10

私は選択可能な行を持つテーブルビューを持っています。 テーブルビューをリロードすると、いくつかの新しい行が追加(または削除)され、テーブルビューのセルの一部のラベルが変更されることがあります。それは私が[tableView reloadData]に電話をかけて達成したいことです。選択状態をクリアせずにテーブルビューのデータを再ロード

このメソッドは残念ながら、テーブルビューの全体的な状態(選択を含む)もクリアします。しかし、私は選択を維持する必要があります。

どのようにして、選択した行を選択したままでテーブルビューにすべてのデータを再ロードできますか?データを再ロードする前に

rowToSelect = [yourTableView indexPathForSelectedRow]; 

答えて

16

あなたがして、選択した行のインデックスパスを格納することができます。リロード後:

[yourTableView selectRowAtIndexPath:rowToSelect animated:YES scrollPosition:UITableViewScrollPositionNone]; 
+1

かなり簡単です。ありがとう! – Mischa

9

JeroVallisソリューションは単一選択テーブルビューで機能します。 彼のアイデアに基づいて、私はそれを複数の選択でどのように動作させたかです:

NSArray *selectedIndexPaths = [self.tableView indexPathsForSelectedRows]; 
[tableView reloadData]; 
for (int i = 0; i < [selectedIndexPaths count]; i++) { 
    [tableView selectRowAtIndexPath:selectedIndexPaths[i] animated:NO scrollPosition:UITableViewScrollPositionNone]; 
} 
+0

完璧に動作します!ありがとう! :) –

+0

しかしこれは、以前に選択された各セルについてDidselectRowAtIndexPathを再度呼び出すでしょう。また、ユーザーがセルを選択したときにコーディングしたアクションをトリガーします。 – omarojo

関連する問題