Intento establecer un valor NSString dinámico cada vez que se presiona una celda de tabla en mi aplicación. Puedo pasar la variable a mi UINavigationController personalizado con el siguiente código:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *page = [menuItems objectAtIndex:indexPath.row];
[[segue destinationViewController] setGrabPage: page];
}
El problema es ese grabPage
solo se establece en NavigationController y no en la vista superior que se muestra dentro del controlador de navegación. ¿Cómo paso este valor a la vista superior?
Respuestas
0 para la respuesta № 1Si su destinationViewController es un UINavigationController, debe convertirlo en un UINavigationController y obtener el rootViewController del controlador de navegación.
Conviértalo al tipo de este primer controlador y estará listo para comenzar.
EDITAR: Código de muestra añadido
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *page = [menuItems objectAtIndex:indexPath.row];
UINavigationController *nav = (UINavigationController *)[segue destinationViewController];
MyViewController *vc = (MyViewController *)(nav.viewControllers[0]);
[vc setGrabPage: page];
}