I made an app in iOS 7 and when I switched to Xcode 6.1 & iOS 8.1 my custom back buttons no longer appeared and they instead just showed the previous view controllers title--which is the default.
I am using:
self.navigationItem.backBarButtonItem.title = @"";
self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];
This is no longer working, I made sure to set delegates... (in .h & .m respectively)
.h
<UINavigationControllerDelegate, UINavigationBarDelegate>
.m
self.navigationController.delegate = self;
I don't know if you do this differently in iOS8, I searched the boards and could only seem to figure out how to hide the back button. I know you have to set the back button text in the parent VC so to cover myself I included identical code in both VCs.
This code works so I know I have some ability to communicate with my navbar so it isn't like I have a problem there...
self.navigationItem.title = @"New <type>";
Thanks
Go to Settings > Accessibility > Touch, and tap Back Tap. Tap Double Tap or Triple Tap and choose an action. Double or triple tap on the back of your iPhone to trigger the action you set.
Go to Settings > Accessibility, then tap Side Button (on an iPhone with Face ID) or Home Button (on other iPhone models).
Sometimes with barButtonItems you need to just make new ones, instead of modifying old ones. I tried your code and it did not work for me either. This worked
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIBarButtonItem *item = [[UIBarButtonItem alloc] init];
item.title = @"Title";
self.navigationItem.backBarButtonItem = item;
}
EDIT
This code needs to be in the previous view controller, not the view controller that has the back button. Ex. If viewController A segue's to viewController B and you want the back button on view controller B to say "Backy" instead of viewController A's title, then you actually put this code in viewController A, not viewController B
EDIT 2
To dynamically change the back button title of the view controller, replace the backBtn before you push a viewController, and give it the appropriate title.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let barBtnItem = UIBarButtonItem()
navigationItem.backBarButtonItem = barBtnItem
if segue.identifier == "seg1" {
barBtnItem.title = "Hello 1"
} else if segue.identifier == "seg2" {
barBtnItem.title = "Hello 2"
}
}
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