I am trying to get the following setup in Storyboard.
Where I have a table view in the beginning, and when I tap a cell it needs to transition to the tab bar controller, which works. But now I want a title and an extra navigation bar button in the the 2 most right controllers.
But I can't seem to drag a button to there or when setting the title, nothing shows up. How can I achieve this setup in storyboard?
Updated question, based on answer below.
When I have this new setup (thus with an extra navigation controller in between) I can set the title in the storyboard, but when running the app, the added title is not shown.
I have uploaded a Xcode project with exactly that setup. Perhaps it can come in handy.
A tab bar controller is a powerful UI component for iOS apps. It's a container view, and you use it to group view controllers together. They give your app's user access to the most important screens of your app.
Once the navigation controller object is selected, hold down the Control key on your keyboard and the left button on your mouse and drag your mouse over to the view controller (on the right) that was originally on your storyboard.
To add a tab, first drag a new View Controller object to the storybard. Next control-drag from the tab bar controller to new view controller and select view controllers under Relationship Segue . Your tab bar controller will update with a new tab.
For changing the UINavigationBar
title (with no need to create 2 other UINavigationController
) you can just use
[self.parentViewController.navigationItem setTitle:@"Title"];
and for adding the right button use
self.parentViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(myRightButton)];
on viewDidLoad
method for each UIViewController
referenced from your UITabBarController
.
If you want to work with "navigation structures" inside your UIViewController
from TabItems
so you could edit your BUFViewController.m to that:
#import "BUFViewController.h"
@interface BUFViewController ()
@end
@implementation BUFViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self.parentViewController.navigationController setNavigationBarHidden:YES];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];
}
-(void)done{
[self.parentViewController.navigationController popToRootViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
You have to think as your UITabBarController
is inside your parent NavigationController
, so you want to hide the parent UINavigationBar
and show yours.
After that, you'll be able to back to your table using popToRootViewControllerAnimated
: on the parent's UINavigationController
.
Hope that helps :)
Just in case anyone was looking for a swift approach:
tabBarController?.title = "Your Title"
tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Right Button Title", style: UIBarButtonItemStyle.Plain, target: self, action: "rightButtonFunction")
The code is best placed in viewDidAppear
or viewWillAppear
so the title and button change as the different tabs are pressed.
You also wouldn't need the extra navigation controllers with this approach.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With