UITableView で行選択をすると、その行がハイライト表示に変わります。
で、通常はUITableViewController を継承しているので、viewWillAppear の中で[super viewWillAppear:animated]; とやっておけば、ハイライト解除もちゃんと行われるのですが、自前のUIViewにUITableViewを放り込んで使っている場合などUITableViewController を使わずにUITableViewを使用する場合があります。
そんなとき、UITableViewの選択解除を行う方法です。
方法
viewWillAppear メソッドの中でdeselectRowAtIndexPathを呼んでやる。
こんな感じ。
-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; UITableview* table = self.myTable; [table deselectRowAtIndexPath:[table indexPathForSelectedRow] animated:NO];
deselectRowAtIndexPath は選択状態を解除したい行のインデックスを要求してくるので、そこにindexPathForSelectedRow を使って「選択されている行のインデックス」を渡してやるのがポイント。