jubilee

Programing, Books and more...

UITableViewのセルのハイライト制御

セルをタップして詳細画面に遷移した後に、戻ってきた時、タップしたセルのハイライトが残っている。
このハイライトを消す方法。
UITableViewControllerを使用しているぶんには、特に意識する必要はない。

UITableViewControllerを継承してUITableViewを使う場合

UITableViewControllerのviewWillAppear:にはハイライト解除の処理が定義してある。
なので、viewWillAppear:メソッドをオーバーライドするときは、必ず親クラスのviewWillAppear:メソッドを呼ぶこと。

1
2
3
4
5
- (void)viewWillAppear:(BOOL)animated
{
  // 必ずこれを呼ぶこと
  [super viewWillAppear:animated];
}

UITableViewControllerを継承せずにUITableViewを使う場合

自分で実装すること。

1
2
3
4
5
6
- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  // ハイライト解除
  [_tableView deselectRowAtIndexPath:[_tableView indexPathForSelectedRow] animated:YES];
}

参考

http://d.hatena.ne.jp/glass-_-onion/20090324/1237864499