How to Customize Toolbar inside a Navigation Controller - ios

I have a noob question.
I am developing a simple app that uses a navigation controller (so, a nav bar on top, and a toolbar is shown on bottom via interface builder; I use storyboards). This nav controller shows a number of related tables (table views) on different screens.
My question is: I want to populate the toolbars for each screen. Ideally, I'd like to populate a label there that shows a little summary text about the contents of the table view currently displayed - but I understand that that may not be the purpose of those toolbars, and not be supported by the UIKit toolbar view.
But what should work (to my modest understanding) is to show buttons there - individualized for the current screen. But I couldn't for the life of me figure out how to do that (I tried in interface builder - but on each screen controlled by the navigation controller, the toolbar is shown, but can not be accessed; it is also not referenced in the outline for that screen - only the outline for the navigation controller shows a reference to a toolbar, and if I change anything in it, which is possible, it does not show up in any of the screens controlled by the navigation controller).
Hope this is clear enough. I think this is a very simple issue to do - but I am stuck; Google searches didn't help me. Maybe someone of You can point me to some keywords to look for?
Thanks a lot for considering!
Best regards,
Björn

What exactly are you trying to drag into the navigation controller bottom toolbar?
From my experience you are only allowed drag out Bar Button Item's along with Fixed and Flexible Spaces.

Related

Too Many Items for Nav Bar Layout in iOS

I need some help figuring out how to fix the layout of a navigation bar in an iOS app. When adding navigation to 'child' views of a given screen, my approach so far has been to add buttons to the 'leftBarButtonItems' collection of the UINavigation item. As long as the number of buttons doesn't exceed 3 or 4 everything works great.
Unfortunately, I now have a screen that requires additional buttons. Everything seemed to build fine, but when I actually run the application I end up with a jumbled mess like this:
Is there a better way to layout a UI with nav and toolbar buttons like this? If putting the buttons in the nav bar is actually the correct way, what do I need to do to make the layout handle cases where the content can't fit?
I wouldn't bother with adding any extra buttons. Users expect most apps to behave in similar ways, and (while this is technically possible) it's an unusual thing to do.
Apple's HIG states:
Avoid crowding a navigation bar with too many controls. In general, a navigation bar should contain no more than the view’s current title, a back button, and one control that manages the view’s contents.
And, even if you choose to ignore Apple's HIG, this will certainly won't be good for accessibility. Your users can (and will) change the text size with Dynamic Type - so your assertion that it's OK if the "number of buttons doesn't exceed 3 or 4" will be proven false by someone.
You'd be better to add a toolbar instead, or find some other way of providing those features.
The navigation bar often has the title of the previous view on the left side. The right side contains a control, like Edit or a done button, to manage content within the active view.
Navigation bar Example
Apple documentation recommends to avoid crowding a navigation bar with too many controls.
A navigation bar should contain no more than the view's current title, a back button, and one control that manages the view's contents.
For the back button you should use the standard one. As for the text-field it should have enough room. If items in the nav bar are crowded consider separation by inserting fixed space by using UIBarButtonSystemItemFixedSpace constant value in UIBarButtonItem.
For more information visit the following link.
The way to go when you need 3 or more items is by using either nav bar or toolbars. You can combine both nav bar and toolbars. For more information use apple documentation on toolbars.

Not able to see tab bar controller

I am working on Xcode 5 and have embedded a tab bar controller to a Master-Detail application templates MasterViewController. But for some reasons the tab bar is not visible. A tab bar should be visible in all the screens connecting the Navigation Controller but that cannot be seen. I have already coded lot of functionality in my application using Master-Detail view controller and now my application requires the functionality of building a tab bar controller.
I have looked for ways of resizing the size of table view in the MasterViewController so that tab bar is visible. But I am not sure of how to resize it, as like normal table views this table view does not give markers to resize it.
I have tried changing the streching setting by of the table view and changing its height. But it does not help.
Please help with your ideas around this. I am extremely thankful for your time.
Regards,
Sameeksha
In the storyboard builder, when selecting the related UIViewController, there are a few parameters used to make the preview, you might by accident turned off some features.
In your storyboard, select one of the view controllers, go to Attribute Inspector (Option + Command + 4) and under Simulated Metrics set the value of Bottom Bar to Inferred if it is set to none or any other values.

iPad UI navigation - split view with horizontally scrolling views

I'm looking for suggestions to implement a specific UI navigation pattern on iPad. It's not radically different from standard behaviour, but I'm unsure of the best approach to use.
Picture a standard split view, with a master view on the left, detail on the right. I want an action in the detail view (e.g. button press) to navigate to an additional detail screen by scrolling from right to left. The result is that the original detail view is on the left (with its width unchanged), and the new detail view on the right. A back button in the nav bar reverses the process. When the master view is visible, the back button is replaced by a menu button in the nav bar (show/hide slide out menu).
I've seen a few similar implementations in existing apps. One that's easy to reference is Shopify's
online demo. Adding an item to the cart and pressing the total button triggers the navigation behaviour.
Any pointers on the best way to implement this would be much appreciated.
Thanks.
Creating a custom container view was a good solution.

iOS Navigation Bar VS UIToolBar

According to Apple's "Human Interface Guidelines" - Navigation bars should only have one other button (apart from the standard back button)
All this is fine, but there are several apps which have numerous buttons on the top Navigation bar, such as the Facebook app (Image)
My question / discussion arises from here. . .
1) Would apple accept the use of a UIToolBar in place of a Navigation bar (with a custom "back" button", which would act as a replacement for the Navigation Bar:
2) Is this how Facebook would have achieved their top bar?
3) IF I could use a toolbar instead of a Navigation Bar, i would have a small space at the top where the toolbar would overlap the "status bar" - how should i overcome this issue? -
- would placing a A UIView, in that position with an embedded Toolbar be the correct solution to this issue?
All your help / comments / guides are very much appreciated
You don't have to show the navigation bar, it can be hidden (see setNavigationBarHidden:animated:). You can use UIToolbar instead but there are a lot of options for customizing the navigation bar.
You can set the leftBarButtonItem, the titleView, or the rightBarButtonItem to be a custom view as specified in the UINavigationController class reference. Those properties take a UIBarButtonItem but that doesn't have to be a button. You can create a UIBarButtonItem using initWithCustomView: to create a UIBarButtonItem with any UIView. It can be a UIView that has multiple buttons as subviews or a search bar or segmented control or whatever views you need as long as they fit and don't violate the HIG. You can do that with any of the 3 custom views on the navBar.
1) Would apple accept the use of a UIToolBar in place of a Navigation
bar (with a custom "back" button", which would act as a replacement
for the Navigation Bar:
My advice, when faced with a "should I possibly violate the specification by working around it and hoping they don't mind" decision, is "no". Are you willing to spend the time to change the code to the meet the spec if they don't accept it?
2) Is this how Facebook would have achieved their top bar?
I'm not sure this is answerable.
3) IF I could use a toolbar instead of a Navigation Bar, i would have
a small space at the top where the toolbar would overlap the "status
bar" - how should i overcome this issue? - - would placing a A UIView,
in that position with an embedded Toolbar be the correct solution to
this issue?
I created an App with a Tool Bar AND a Navigation Bar. See the screen shots (Review page) here. The Tool Bar is at the top, beneath the navigation bar. At one point, I added a feature to make a tap on the navigation bar hide/show the tool bar. But since the longer displays came out, I have removed it. Most users don't really seem to mind the extra small hit at the top as long as the display provides the information they need.
Was this helpful?
1) Probably. I've not seen or heard of an example of Apple bothering to reject an app that used a toolbar rather than a navigation controller. However, you may get a reviewer having a bad day that decides to reject your app for that reason; it's really impossible to know for sure, but unlikely. I will say that I've submitted an app that looks similar to apps with a navigation controller but the top bar is custom, and it was accepted.
2) The Facebook top bar is most likely totally custom. You can see that the transparency effect is unlike the standard navigation bar's transparency, and the layout is not similar to any standard apple control.
3) Align your top bar (however you do it) with the topLayoutGuide in interface builder (or in code).

Linking custom iOS buttons to footer nav buttons

Im going to say this straight up - I'm an xcode noob. I am designing an app which has custom buttons on the home screen as well as a footer nav with buttons. When I select the custom button it goes to the right view but the footer nav button is not highlighted.
I just need to find a way to tell the footer nav i am on that section (got their by clicking on the home button). Apparently i have been told there is no way to do this so i might as well scrap my home view custom buttons. I'm hoping to find someone here with a different view. I would provide a screenshot so it makes my explanation clearer but i have not got a high enough rating.
Originally i just wanted to hide the nav bar for the home screen but i was also told that it was not possible. Its there the whole time or not at all. Looking for a second opinion...
Use the following code to hide navigation bar
self.navigationController.navigationBarHidden=YES;
Also, just wanted to confirm, when you say footer navigation buttons, do you mean a tabbed view? some thing like this screenshot?
If you could provide some screenshots would be great.

Resources