I’m using the following code to try to make a “back” button for my app, the view that this code is located is in a modal view (if that has any bearing?):
navBar = [[UINavigationController alloc] initWithRootViewController:tvController];
[navBar.view setFrame:CGRectMake(0, 0, 320, 460)];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle: @"Back"
style: self.navigationController.navigationItem.leftBarButtonItem.style
target: self
action: @selector(backAction)];
navBar.navigationItem.backBarButtonItem.enabled = YES;
[self.view addSubview:navBar.view];
The view does not show at all, thank you for any tips!
EDIT: Even if I use a leftBarButtonItem, it still does not show up, I think there is some problem with the self.navigationItem bit of my code?
You need to make sure that when you present the modal view that you wrap it in a UINavigationController, then you’ll have a valid navigation bar to manipulate. Otherwise you’ll change the navigationItem all you want but it won’t show up because you’re not in a navigationController.
So when you go to present the view controller you’re probably doing something like this.
What you want to do is present it like this
Then when you’re in the modal view you’ll have a valid navigation bar that you can manipulate. Altering the leftBarButtonItem at that point will actually do something and be visible.
If you’re trying to make this show a back button though you’re probably “doing it wrong” typically if you’re presenting something modally like this you’d show a “done” button. However by wrapping this with a navigation controller like this it does allow the modal view to then push and pop view controllers and operate as a normal navigation stack. But the root of it should probably have a “done” button not a back to return back to its previous state.