2011-08-12 16 views
22

私はUITableViewを持っています。選択に基づいてテーブルデータを更新したいと思います。今私は[mytable reloadData]を使用しています。選択された特定のセルをただ更新できる方法があるかどうかを知りたい。 NSIndexPathなどで変更できますか?助言がありますか?iOSのリロード固有のUITableViewセル

ありがとうございました。

答えて

62

、あなただけ呼び出す必要があります:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; 

をセクション2の行3をリロードし、たとえば、セクション3の4行目を実行するには、これを行う必要があります:

// Build the two index paths 
NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:3 inSection:2]; 
NSIndexPath* indexPath2 = [NSIndexPath indexPathForRow:4 inSection:3]; 
// Add them in an index path array 
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, indexPath2, nil]; 
// Launch reload for the two index path 
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade]; 
+0

インデックスパスに慣れていません。あなたは私に詳細を教えてもらえますか? – pa12

+1

名前としてNSIndexPathが示すインデックスを保持します。インデックスは、2つのコンポーネントの行とセクションで構成されています。 [NSIndexPath indexPathForRow:(NSUInteger)inSection:(NSUInteger)];で作成することができます。 – Abhinit

+0

各セクションは複数の行を持つことができます。 iPodのMP3プレーヤーでは、例えば、各レターのセクションがあります。このセクションのそれぞれには、いくつかのアーティストが含まれています。 元のコードを編集して操作方法を示しました。 – CedricSoubrie

2

私はあなたがUITableViewのこの方法を探していると思う:上記のiOS 3.0とするために

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 
6

また、 UITableViewCellオブジェクトを変更してラベルなどを変更します。

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
cell.textLabel.text = @"Hey, I've changed!";