NavigationBar no muestra la propiedad correcta cuando pushViewController

El problema es bastante simple de entender con imágenes. Tengo un UINavigationController que permite al usuario cambiar entre vistas.

La primera vista contiene una barra de búsqueda y una vista de tabla así: introduzca la descripción de la imagen aquí

La segunda es una vista básica donde se muestra la información sobre la celda.

Cuando hago clic en la barra de búsqueda, el controller de navigation se oculta y la barra de búsqueda ahora está en la parte superior.

Ahora, si hago clic en una celda, se dirige a las segundas vistas, pero la barra de navigation se oculta primero como a continuación:

introduzca la descripción de la imagen aquí

Y luego, aparece automáticamente así:

introduzca la descripción de la imagen aquí

He probado un par de cosas como mostrar la barra de navigation antes de presionar el siguiente controller de vista, pero es bastante feo. ¿Alguien sabe cómo hacer que el progtwig muestre la barra de navigation directamente en la segunda vista (como en la aplicación de contacto)?

[ACTUALIZACIÓN]: Código

AppDelegate.m (estoy hablando de navigationcontroller2)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; FirstViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; SecondViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; viewController1.managedObjectContext = [self managedObjectContext]; viewController2.managedObjectContext = [self managedObjectContext]; viewController1.viewController2 = viewController2; UINavigationController *navigationcontroller1 = [[UINavigationController alloc] initWithRootViewController:viewController1]; [navigationcontroller1.navigationBar setTintColor:[UIColor lightGrayColor]]; UINavigationController *navigationcontroller2 = [[UINavigationController alloc] initWithRootViewController:viewController2]; [navigationcontroller2.navigationBar setTintColor:[UIColor lightGrayColor]]; self.tabBarController = [[UITabBarController alloc] init]; self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller1, navigationcontroller2, nil]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; return YES; } 

FirstView.m

 - (void) searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar { [self.navigationController setNavigationBarHidden:YES animated:YES]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (!noResultsToDisplay) { PinDetailsViewController *pinDetailsViewController = [[PinDetailsViewController alloc] initWithNibName:@"PinDetailsViewController" bundle:nil]; NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:indexPath]; Pin *pin = (Pin *) managedObject; [self.navigationItem setTitle:@"Pins"]; [self.navigationController pushViewController:pinDetailsViewController animated:YES]; [pinDetailsViewController updateWithPin:pin]; } } 

Si necesita algo más, solo pregunte, pero creo que está todo allí.

Intente usar este código en cada control de vista.

 - (void) viewWillAppear:(BOOL)animated { [self.navigationController setNavigationBarHidden:NO animated:animated]; } - (void) viewWillDisappear:(BOOL)animated { [self.navigationController setNavigationBarHidden:YES animated:animated]; } 

Antes de presionar el nuevo controller de vista, debe mostrar la barra de navigation:

[self.navigationController setNavigationBarHidden:NO animated:YES];

Tuve un problema similar con la position de mi barra de navigation. El mío se estaba moviendo detrás de la barra de estado y solucioné el problema configurando manualmente el marco de la barra de navigation:

 -(void)adjustNavBarOrigin { CGRect r = self.navigationController.navigationBar.frame; r.origin = CGPointMake(0, 20); // 20 is the height of the status bar self.navigationController.navigationBar.frame = r; } 

Tuve que llamar a este método en varios lugares, incluyendo viewWillAppear: and didRotateFromInterfaceOrientation :, pero funcionó muy bien 🙂

Ocultar la UINavigationBar puede alterar las properties a veces. Intenta usar la propiedad alpha lugar de hidden .