ios - studio - Cómo ocultar una barra de navegación de un controlador de vista en particular
sethasnavigationbar (4)
Entonces, si estás en alguna vista, el controlador debe usar este método:
[self.navigationController setNavigationBarHidden:YES animated:YES];
Más aclaraciones:
UINavigationController tiene una propiedad navigationBarHidden, que le permite ocultar / mostrar la barra de navegación para el controlador de navegación completo.
Vamos a saquear en la próxima jerarquía:
--UINavigationController
------UIViewController1
------UIViewController2
------UIViewController3
Cada uno de los tres UIViewController tendrá una barra de navegación ya que están en UINavigationController. Por ejemplo, quiere ocultar la barra en el segundo (en realidad no importa en cuál), luego escriba en UIViewController2:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES]; //it hides
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES]; // it shows
}
Creé una aplicación para iPhone con dos pantallas emergentes. Luego el usuario es llevado a primera vista. He agregado un UINavigationController. Funciona perfectamente bien.
¿Cómo elimino la barra de navegación solo para la vista de apertura?
Ventana principal
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.splashScreen = [[SplashScreen alloc]
initWithNibName:@"SplashScreen"
bundle:nil];
if (self.pageController == nil) {
openingpage *page=[[openingpage alloc]initWithNibName:@"openingpage" bundle:[NSBundle mainBundle]];
self.pageController = page;
[page release];
}
[self.navigationController pushViewController:self.pageController animated:YES];
[window addSubview:splashScreen.view];
[splashScreen displayScreen];
[self.window makeKeyAndVisible];
return YES;
}
Presente la vista de apertura de forma modal, o;
- no lo agregue a su controlador de navegación
- Preséntelo antes del controlador de navegación.
- Una vez que todo se haya cargado, descarte la vista de apertura y muestre el controlador de navegación (ambos sin animación).
Tomando un ejemplo de este hilo: ¿Cómo puedo mostrar una pantalla de bienvenida durante más tiempo en un iPhone?
-(void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:splashView];
[NSThread detachNewThreadSelector:@selector(getInitialData:)
toTarget:self withObject:nil];
}
-(void)getInitialData:(id)obj {
[NSThread sleepForTimeInterval:3.0]; // simulate waiting for server response
[splashView removeFromSuperview];
[window addSubview:tabBarController.view];
}
Swift 4:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
navigationController?.setNavigationBarHidden(false, animated: false)
}
Use debajo de un código de línea para ocultar la barra de navegación en Swift3 y Swift4
navigationController?.setNavigationBarHidden(true, animated: true)
Para mostrar la barra de navegación
navigationController?.setNavigationBarHidden(false, animated: true)