iOS - Barra di navigazione
Uso della barra di navigazione
La barra di navigazione contiene i pulsanti di navigazione di un controller di navigazione, che è una pila di controller di visualizzazione che possono essere premuti e visualizzati. Il titolo sulla barra di navigazione è il titolo del controller di visualizzazione corrente.
Codice e passaggi di esempio
Step 1 - Crea un'applicazione basata sulla visualizzazione.
Step 2 - Ora seleziona l'app Delegate.h e aggiungi una proprietà per il controller di navigazione come segue:
#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 - Ora aggiorna il file application:didFinishLaunchingWithOptions: metodo in AppDelegate.m file, per allocare il controller di navigazione e renderlo il controller di visualizzazione principale della finestra come segue:
- (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 - Aggiungi un nuovo file di classe TempViewController selezionando File → New →File... → Objective C Class, quindi denominare la classe TempViewController con la sottoclasse UIViewController.
Step 5 - Aggiungi un UIButton navButon in ViewController.h come segue -
// ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
UIButton *navButton;
}
@end
Step 6 - Aggiungi un metodo addNavigationBarItem e chiama il metodo in viewDidLoad.
Step 7 - Crea un metodo per l'azione degli elementi di navigazione.
Step 8 - Abbiamo anche bisogno di creare un altro metodo per spingere un altro controller di visualizzazione TempViewController.
Step 9 - L'aggiornamento ViewController.m è il seguente -
// 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 - Quando eseguiamo l'applicazione otterremo il seguente output -
Step 11 - Facendo clic sul pulsante di navigazione MyButton, viene attivata / disattivata la visibilità del pulsante di navigazione.
Step 12 - Facendo clic sul pulsante di navigazione push, viene premuto un altro controller di visualizzazione come mostrato di seguito.