From the documentation of UITableView / UITableViewController:
If you decide to use a
UIViewController subclass rather than
a subclass of UITableViewController to
manage a table view, you should
perform a couple of the tasks
mentioned above to conform to the
human-interface guidelines.To clear
any selection in the table view before
it’s displayed, implement the
viewWillAppear: method to clear the
selected row (if any) by calling
deselectRowAtIndexPath:animated:.
After the table view has been
displayed, you should flash the scroll
view’s scroll indicators by sending a
flashScrollIndicators message to the
table view; you can do this in an
override of the viewDidAppear: method
of UIViewController.
So lets say I do my custom stuff here and I do not flash the scroll indicator, and I do not reset the selection (which I think is wrong anyways, the user wants to know from where he came from). Will they reject it?
Apple may reject it. In practice, they won’t (this is practical experience, not inside knowledge). They will reject apps now for using their private api, although in the past they wouldn’t. But if your app sucks, not flashing scroll indicators might be a reason they give for rejecting it. If not deselecting a cell is important to your UX, then you should be ok – or it’s possible that you have a poor UX.
Deselecting the cell should be animated – so the user gets the hint of where they came back from, which they should be able to remember anyway. But retaining the selection could lead the user to think that the selection is somehow significant and will affect their subsequent actions, which from your description it won’t. So lose the selection.