Q:

UINavigationItem - no "free" backbutton for one of my buttons

So in my main window i have these two buttons "settings"(leftBarButtonItem) & "i"(info button,rightBarButtonItem)" 
When i press the info button i get the "free" back button, but i have to create one programmatically for the settings button? why is that?
Here is how i programmed the buttons in viewDidLoad
UIBarButtonItem *settingsBarButtonItem =[[UIBarButtonItem alloc]initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(settings:)]; 
self.navigationItem.leftBarButtonItem = settingsBarButtonItem;

UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
CGRect frame = infoButton.frame;
frame.size.width = 40.0f;
infoButton.frame = frame;
[infoButton addTarget:self action:@selector(about:) forControlEvents:UIControlEventTouchUpInside];
butInfo = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
self.navigationItem.rightBarButtonItem = butInfo;

A:

How was the ViewController invoked?
In general the "Free" back button only happens if the view controller was pushed onto the navigation stack by a parent ViewController.
This could be via a Segue (if you are using Storyboard), or via - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated (message to UINavigationController).
from the UINavigationController documentation:
If the top-level view controller does not have a custom left bar button item, but the navigation item of the previous view controller has a valid item in its backBarButtonItem property, the navigation bar displays that item.
If a custom bar button item is not specified by either of the view controllers, a default back button is used and its title is set to the value of the title property of the previous view controller—that is, the view controller one level down on the stack. (If there is only one view controller on the navigation stack, no back button is displayed.)
This means that you must have set the Title property of the Parent View Controller to display a back button with it's name.

