NavigationBar from NavigationController doesn't show in IB StoryBoard - iphone

My first view is a UINavigationController with a rootview, which correctly shows a NavigationBar in IB in the .storyboard. I think this is nice when I am designing in IB, so I know the proportions, since the view is getting a little smaller with a navigationbar. This navigationbar from the navcontroller is pushed on all views in my app, but in IB the bar doesn't show, making it hard to figure out how it's going to look. I have chosen 'inferred' which I thought ment the NavController should automatic implement it, it is ok to just choose 'navigationcontroller' as the top bar in the Simulated Metrics? In some of my viewcontrollers the navigationbar is there, and all settings are 'inferred'.
Thanks.

In each viewController in the StoryBoard file in the Attributes Inspector are several drop down menus.
One of them is "Top Bar".
If this is set to "Inferred" then the navBar will show only if it's parent view shows the navbar (parent as in the view that segues to it).
Somewhere in your hierarchy will be one that has the Top Bar option set to None (or possibly all of them).
Anyway, if you change this it will show the Top Bar in the IB.
HTH.

Related

Is there a way to show UINavigationController in the second storyboard if that UINavigationController in the first storyboard?

I have the first storyboard has UINavigationController its continues to the second storyboard but it doesn't appear there only when running the app.
I link between storyboard by (Storyboard Reference)
The first storyboard
The second storyboard
The UINavigationController doesn't appear in the second storyboard its appear only when running the app.
according to navigation controllers property it will not show the navigation bar in your case , if you want to edit or customise navigation items or navigationbar then you have to make changes programatically .
but to make changes in navigationbar or navigation items there is some limitations sometimes you can't fully customise it and sometimes you customise it depend on your requirement ... :(
I suggest you that use navigation property but hide the navigation bar
and on place of navigation bar (on top of every view controller) set a
view which will look like navigation bar and you can easily customise
it as per your requirement .
This is normal behaviour of the Storyboard as the controller in your second storyboard does not know if it is a controller in a navigation controller, hence it does not show the navigation bar. If yo want to show the navigation bar in the storyboard you can select it in the Simulated Metrics in the Attributes Inspector (shown here in that thread). You can see it working by giving the controller a title for example.

View Hierarchy with UIToolBar and UITabBarController

I have a rootViewController that is a UITabBarController. A UIToolBar is present in that controller since it has a SearchBar that is global to the app. In certain tabs, there should be specific UIBarButtonItems, or UISegmentedControl, along with the searchBar. In other tabs, there should be nothing in the toolBar, just a title.
What is a good way to lay out the view? Currently based on what tab is selected, the main toolBar from the rootViewController is either used as it is, have a UISegmentedControl added to it, hidden completely and replaced with another viewController that has its own toolbar, etc. To me, I'm thinking that each viewController that is present in its own tab can have its own ToolBar, and reference the global functionality, vs hiding/showing different toolbars.
sorry if this is a convoluted question. Just wondering if people had experience with this. Thanks.
The short answer is that there isn't really a good way to do this. If you're using a tab bar controller, the tab bar will always be visible along the bottom of your screen. Presumably each tab is a UINavigationController with a navigation bar at the top. There's not an appropriate place to put toolbar buttons in this layout.
A better design could be to abandon the UITabBarController and use a UINavigationController as your root view controller. Instead of tabs, you can have a table view with an item for each view of your application. Then you'll have room for a toolbar at the bottom of the screen. In fact, UINavigationController supports having a toolbar at the bottom. You just override the toolbarItems property to return the items that should appear in each of the child view controllers. You'll just need to set toolbarHidden to NO on the UINavigationController, and you're good to go.

Creating the view with Interface Builder, when using Navigation Controller

I'm creating an UIViewController in IB. And I want to use this controller with a UINaviagationController.
The problem is when I use this view controller with the navigation one the title bar appears and all the elements on view go down. Ho can I take account of this when creating the controller in IB ?
PS: Now, I just put everything a bit higher. But I don't think it's a right way.
In IB select the view controller view, open the inspector, select the View Attributes tab, and on Top Bar specify "Navigation Bar". This will make a Navigation Bar in the view and then you'll be able to place your subviews in the remaining content.
In the same way you can inform IB if your view will contain the status bar, the tab bar, a prompt.

Can a UINavigationController contain a UITabbarController?

I want to have a UIView inside of a NavigationController that has 4 buttons. Clicking on any of these 4 buttons will push a UITabBarController that contains a NavigationController with a respective UIView.
Is this possible? Tweetie seems to do something similar.
On my application, I have a tab bar view controller, then inside of that, I have navigation controllers going to individual views in my interface builder. I believe if you just copy this format, it will work.(-> means connected)
Tab Bar View Controller->4 separate Navigation Controller->ui views
I hope this helps

Is it advisable to use the same xib in a UINavigationController view and a modal view?

I have a view (and corresponding view controller) in my iPhone app that allows the user to edit settings for the application. This view is accessible via a menu (a table view). I use pushViewController in my UIViewController subclass to get it shown. When I do this, it appears as I expect - the nav bar appears on top of the xib, and the empty space I left up there in the xib is occupied.
I also sometimes show that settings view as a modal view using presentModalViewController. When I do this, the top of the xib starts at the bottom of the nav bar instead of underneath it.
The documentation does say that presentModalViewController will resize the view to fit, so I could see this being expected behavior. However, for me, it isn't desired behavior.
I can kind of work around it by setting the settings view controller to not show the nav bar, but then there's a weird empty space at the top of the view.
Ideally, I'd like to use the same xib in both of these situations. However, maybe that's not a best practice? How do you guys usually reuse a xib?
I was thinking that maybe I could have the view controller shift all of the controllers up if it's in modal mode, but I'd like something better, if it's available.
Each UIView has an autoresizingMask property. By configuring that (can be done in Interface Builder), you should be able to reuse the view and have it automatically resize to take up the whole screen when the nav bar should not be there.
Apple's documentation is here:
http://developer.apple.com/iPhone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40007072-CH8-SW10