I have a modal view controller whose view comes from a XIB. I want it to have the same look and feel as the rest of my navigation based app, but it's not a view that's pushed to the navigation stack, it's presented modally. I dragged a UINavigationBar in and made it an outlet, but it doesn't have a title property to set. I have two fields that can bring up this modal view, and I want the title set differently depending on which one creates the modal view.
问题:
回答1:
UINavigationBar
's manage a stack of UINavigationItem
s much like a UINavigationController
manager a stack of UIViewController
s. To set what is visible directly, you should use either pushNavigationItem:animated:
or setItems:animated:
using the navigationItem of the view controller you want the bar to reflect.
eg:
self.navigationItem.title = @"A custom title";
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];
The above code where you have a property navigationBar
which references the stand-alone navigation bar.
If you don't want to manage it yourself, you can do as mplappert suggested and nest your view controller (without a stand-alone UINavigationBar
) in a UINavigationController
and present the navigation controller modally instead of your view controller.
回答2:
Also found this easier way if you've already defined a UINavigationBar in your IB. Assuming self.navigationBar is your IBOutlet:
self.navigationBar.topItem.title = title;
回答3:
(Using XCode 4.5.2) Found a method that works directly in Interface Builder - without setting in code.
With the ViewController object selected in (IB), under the Identity Inspector there is a section labeled "User Defined Runtime Attributes". I added the keyPath "title" of type String and set it to the value I wanted.
Tested and this works when pushed onto a Nav Controller stack and when opened modally (with a Modal Nav Controller of course).
回答4:
viewcontroller.h file in create iboutlet of the navigation item
@property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle;
- Named it "navigationBarTitle"
in viewcontroller.m file in add the code in super viewDidLoad
self.navigationBarTitle.title = @"Favorites";
connect the storybord in navigation bar item to navigationBarTitle.
回答5:
in my .h file
Dragged the Child of the navigation item from the storyboard into the .h file
Named it "navigationBarTitle"
in my .m file
- Added self.navigationBarTitle.title = @"Some Title";
回答6:
Here is the Simplest way:
[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
回答7:
you can use existing navigation bar with following code
self.navigationController?.navigationBar.topItem?.title = "Calender"
回答8:
Simply put your UIViewController
into a new UINavigationController
s view controller stack and present that navigation controller modally.