iOS: barra de navegación

Uso de la barra de navegación

La barra de navegación contiene los botones de navegación de un controlador de navegación, que es una pila de controladores de vista que se pueden presionar y abrir. El título de la barra de navegación es el título del controlador de vista actual.

Ejemplo de código y pasos

Step 1 - Cree una aplicación basada en vistas.

Step 2 - Ahora, seleccione la aplicación Delegate.h y agregue una propiedad para el controlador de navegación de la siguiente manera:

#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@property (strong, nonatomic) UINavigationController *navController;

@end

Step 3 - Ahora actualice el application:didFinishLaunchingWithOptions: método en AppDelegate.m archivo, para asignar el controlador de navegación y lo convierte en el controlador de vista raíz de la ventana de la siguiente manera:

- (BOOL)application:(UIApplication *)application 
   didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   self.window = [[UIWindow alloc] initWithFrame:
   [[UIScreen mainScreen] bounds]];
   
   // Override point for customization after application launch.
   self.viewController = [[ViewController alloc] 
   initWithNibName:@"ViewController" bundle:nil];
   
   //Navigation controller init with ViewController as root
   UINavigationController *navController = [[UINavigationController alloc]
   initWithRootViewController:self.viewController];
   self.window.rootViewController = navController;
   [self.window makeKeyAndVisible];
   return YES;
}

Step 4 - Agregar un nuevo archivo de clase TempViewController seleccionando FileNewFile... → Clase Objective C y luego nombre la Clase como TempViewController con subclase UIViewController.

Step 5 - Agregar un UIButton navButon en ViewController.h como sigue -

// ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
   UIButton *navButton;
}
@end

Step 6 - Agregar un método addNavigationBarItem y llamar al método en viewDidLoad.

Step 7 - Crear un método para la acción del elemento de navegación.

Step 8 - También necesitamos crear otro método para enviar otro controlador de vista TempViewController.

Step 9 - El actualizado ViewController.m es como sigue -

// ViewController.m
#import "ViewController.h"
#import "TempViewController.h"
@interface ViewController ()

@end
@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];
   [self addNavigationBarButton];
   //Do any additional setup after loading the view, typically from a nib
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
   // Dispose of any resources that can be recreated.
}

-(IBAction)pushNewView:(id)sender {
   TempViewController *tempVC =[[TempViewController alloc]
   initWithNibName:@"TempViewController" bundle:nil];
   [self.navigationController pushViewController:tempVC animated:YES];
}

-(IBAction)myButtonClicked:(id)sender {
   // toggle hidden state for navButton
   [navButton setHidden:!nav.hidden];
}

-(void)addNavigationBarButton {
   UIBarButtonItem *myNavBtn = [[UIBarButtonItem alloc] initWithTitle:
   @"MyButton" style:UIBarButtonItemStyleBordered target:
   self action:@selector(myButtonClicked:)];
   
   [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
   [self.navigationItem setRightBarButtonItem:myNavBtn];
   
   // create a navigation push button that is initially hidden
   navButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
   [navButton setFrame:CGRectMake(60, 50, 200, 40)];
   [navButton setTitle:@"Push Navigation" forState:UIControlStateNormal];
   [navButton addTarget:self action:@selector(pushNewView:) 
   forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:navButton];
   [navButton setHidden:YES];
}
@end

Step 10 - Cuando ejecutamos la aplicación obtendremos el siguiente resultado -

Step 11 - Al hacer clic en el botón de navegación MyButton, se activa la visibilidad del botón de navegación.

Step 12 - Al hacer clic en el botón de navegación, se presiona otro controlador de vista como se muestra a continuación.