4

詳細ビューから戻ったときに以前に選択したセル、またはユーザーがアイテムを作成したときに新しく追加されたセルのいずれかを選択解除したいテーブルビューがあります。

ただし、新しいアイテムが追加される場合があるため、 を呼び出してテーブルを更新しreloadDataますviewWillAppear:。これは、ビューが表示されたときにセルが選択されていないことを意味しますself.clearsSelectionOnViewWillAppear = NO

テーブル ビューが表示されたにセルを選択および選択解除することにより( をviewDidAppear:参照)、選択解除アニメーションのタイミングがユーザーにとって明らかに異なります (自分で試してみてください。速度が遅く、スムーズに感じられません)。

テーブル ビューが更新された後でも選択を保持するにはどうすればよいですか? (状況に応じて、以前に選択したセルまたは新しく作成したセルのいずれかを選択解除したいことに注意してください。)または、テーブルのデータを別の方法で再ロードする必要がありますか?

4

2 に答える 2

7

NSIndexPathメソッドから保存し- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath、ビューがリロードされたときにその行の選択を解除できます。

これを行う別の方法として、作成中の に とNSIndexPath現在のUITableViewControllerを渡し、それがポップされたときに特定の行の選択を解除することができます。UIViewControllerUIViewController

新しいアイテムが作成されたら、indexPath の行要素に 1 を追加して、正しい行の選択を解除します。

変更された行のみをリロードすることもできます。

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                      withRowAnimation:UITableViewRowAnimationNone];

[self.tableView selectRowAtIndexPath:indexPath 
                            animated:NO
                      scrollPosition:UITableViewScrollPositionNone];

[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
于 2012-04-26T00:59:13.130 に答える