Setting a property in a segue with Navigation Controller containing another view
Since the destination view controller is actually the navigation controller, try accessing the root view like so:
UINavigationController *navController = [segue destinationViewController];ShowItemsTableViewController *SITViewController = (ShowItemsTableViewController *)([navController viewControllers][0]);[SITViewController setItems:[self itemsFromCoreData]];
For Swift:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "segueShowNavigation" { var DestViewController = segue.destinationViewController as! UINavigationController let targetController = DestViewController.topViewController as! ReceiveViewController }}
Get the topViewController from the UINavigationController:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"showItems"]) { UINavigationController *navigationController = segue.destinationViewController; ShowItemsTableViewController *showItemsTVC = (ShowItemsTableViewController * )navigationController.topViewController; showItemsTVC.items = [self itemsFromCoreData]; }}