bar ios objective-c ios7 uinavigationcontroller uinavigationitem
aquí

ios - bar - navigation controller swift 4



iOS 7: diferentes elementos de navegaciĆ³n para el controlador de la barra de pestaƱas (2)

Soy relativamente nuevo con el desarrollo de la aplicación iOS. Actualmente estoy desarrollando una pequeña aplicación con una barra de pestañas. El problema que estoy enfrentando es que me gustaría tener diferentes elementos de navegación para cada pestaña. Intenté muchas cosas, pero las cosas no funcionan. Estoy programando en el idioma nativo de iOS.

En mi aplicación tengo un AppDelegate. En mi AppDelegate hay un pequeño fragmento de código para configurar mi mainViewController:

- (void)setupOverlordViewController { MainViewController *rootVC = [[MainViewController alloc] initWithNibName:nil bundle:nil]; UINavigationController *navVC = [[UINavigationController alloc] initWithRootViewController:rootVC]; self.window.rootViewController = navVC; }

Estoy configurando mis pestañas en mi MainViewController:

- (void)viewDidLoad { UIViewController *tabView1 = [[Tab1ViewController alloc] init]; UIViewController *tabView2 = [[Tab2ViewController alloc] init]; UIViewController *tabView3 = [[Tab3ViewController alloc] init]; NSMutableArray *tabViewControllers = [[NSMutableArray alloc] init]; [tabViewControllers addObject:tabView1]; [tabViewControllers addObject:tabView2]; [tabViewControllers addObject:tabView3]; [self setViewControllers:tabViewControllers]; tabView1.tabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"TabView1", nil) image:[UIImage imageNamed:@"tabView1.png"] tag:1]; tabView2.tabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"TabView2", nil) image:[UIImage imageNamed:@"tabView2.png"] tag:2]; tabView3.tabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"TabView3", nil) image:[UIImage imageNamed:@"tabView3.png"] tag:3]; }

Cada Vista (tabView1, tabView2, tabView3) tiene su propio diseño, que se establece en el método ViewDidLoad de la Vista. Cuando me gustaría agregar botones de navegación en la barra de navegación al agregarlos en el método ViewDidLoad, parece imposible agregar los botones. La única forma de agregarlos está directamente en mi MainViewController, pero luego no puedo configurar los botones de la barra de navegación en otra pestaña de foreach.

El código para agregar los botones a mi barra de navegación es el siguiente:

UIBarButtonItem *btnNewRecord = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(btnNewRecord)]; NSArray *rightItems = [NSArray arrayWithObjects:btnNewRecord, nil]; [self.navigationItem setRightBarButtonItems:rightItems];

¿Alguien podría explicarme qué estoy haciendo mal?


He creado un ejemplo para ti usando archivos xib. Creé tres Controladores de Vista y los agregué a los controladores de navegación. Siguiendo el código de appdelegate :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { FirstViewController *firstVC = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil]; UINavigationController *firstNavVC = [[UINavigationController alloc] initWithRootViewController: firstVC]; SecondViewController *secondVC = [[SecondViewController alloc] initWithNibName:@"SecondView" bundle:nil]; UINavigationController *secondNavVC = [[UINavigationController alloc] initWithRootViewController: secondVC]; ThirdViewController *thirdVC = [[ThirdViewController alloc] initWithNibName:@"ThirdView" bundle:nil]; UINavigationController *thirdNavVC = [[UINavigationController alloc] initWithRootViewController: thirdVC]; NSMutableArray *tabViewControllers = [[NSMutableArray alloc] init]; [tabViewControllers addObject:firstNavVC]; [tabViewControllers addObject:secondNavVC]; [tabViewControllers addObject:thirdNavVC]; firstNavVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"First", nil) image:nil tag:1]; secondNavVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"Second", nil) image:nil tag:2]; thirdNavVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"Third", nil) image:nil tag:3]; UITabBarController *tabbarController = [[UITabBarController alloc] init]; tabbarController.viewControllers = tabViewControllers; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.rootViewController = tabbarController; [self.window makeKeyAndVisible]; return YES; }

Lo siguiente es el resultado:

Puede descargar el ejemplo del código aquí


necesita un controlador de navegación por separado para cada controlador de vista de barra de pestañas y luego puede agregar UIBarButtonItem en cada controlador de navegación.