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 を使って「選択されている行のインデックス」を渡してやるのがポイント。