I was under the impression that viewDidLoad will be called AFTER prepareForSegue finishes. This is even how Hegarty teaches his Stanford class (as recently as Feb 2013).
the simple solution is to place
[self.tableView reloadData];
in viewWillAppear:
viewWillAppear