2012-01-21 12 views
8

Estoy usando el siguiente código para ocultar mi navigationBar en detailViewController (mi segunda vista), y funciona perfectamente bien cuando toco cualquiera de mi objeto desde el MasterViewController (mi primera vista).setNavigationBarHidden: YES no funciona con searchDisplayController

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

Sin embargo, cuando puedo filtrar la lista de tablas en el MasterViewController usando searchDisplayController y toque cualquier objeto a partir del resultado, el navigationbar en el DetailView no recibe oculto ...

¿Tengo que hacer algún trabajo extra para ocultar la barra de navegación si uso searchDisplayController?

de depuración, me puse el punto de ruptura en la línea de setNavigationBarHidden: sí, e incluso si voy a la detailViewController a través de resultados de búsqueda, la aplicación golpea la línea ..

+3

si puse [self.navigationController setNavigationBarHidden: YES animated: animated]; en viewDidAppear, funciona bien ... pero quiero que esté oculto antes de que aparezca la segunda vista :( – sora

Respuesta

13

que shuold poner [self.navigationController setNavigationBarHidden: YES]; en este viewWillLayoutSubviews function.like:

- (void) viewWillLayoutSubviews 
{ 
    [super viewWillLayoutSubviews]; 
    [self.navigationController setNavigationBarHidden:YES]; 
} 

funciona.

0

si desea ocultar navegación bar luego, en su MainWindow xib desmarque los atributos "Muestra barra de navegación" del Controlador de navegación.

Esto ocultará la barra de navegación en todo el proyecto. Si desea Mostrar la Barra de Navegación en cualquier Controlador, configure la Barra de Navegación Oculta = NO en el Método ViewDidLoad de ese Controlador.

+0

Implementé la barra de navegación programáticamente, por lo que setNavigationBarHidden es la única opción ... no funciona cuando lo uso de el resultado de búsqueda :( – sora

0

Este

- (void) viewWillLayoutSubviews 

provoca problemas de diseño, por lo que utiliza código de abajo. Funciona bien para mí

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

Debe probar este método:
En ese controlador, donde se declaró UISearchController *searchController, debe implementar dos métodos (sólo por ejemplo):

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    // if you want to hide Navigation Bar when searchController will become active 
    _searchController.hidesNavigationBarDuringPresentation = YES; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    _searchController.hidesNavigationBarDuringPresentation = NO; 
} 

El código anterior puede tener diferencias. Punto principal en la propiedad hidesNavigationBarDuringPresentation (iOS 8.0 y posterior). Intenta jugar con él y pasa al hidesNavigationBarDuringPresentation = NO antes de presionar un nuevo controlador. Después de estas manipulaciones, obtuve ganancias: cuando empujé UIViewController, setter setNavigationBarHidden:YES comenzó a funcionar

Cuestiones relacionadas