I'm currently developing an iphone app where I have one screen that includes a web view. I was wondering where to place the toolbar (back, forward, and refresh buttons) knowing that I have to keep the navigation bar for consistency reasons and there is the tab bar which is always showing in my app. I don't want to place the toolbar just under the navigation bar in order not to loose space for the content of the web page.
Can I include my toolbar controls (back, forward, and refresh buttons) in the navigation bar or by that I will by violating the iOS guidelines ? What is the best user experience here ?
Thanks in advance.
Best Regards,
Place your toolbar at the bottom of the screen. It wouldn't be a good user experience to have browser controls on the nav bar because it's easy to confuse nav bar "back" with browser "back", and generally there isn't enough rooom.
You'd be in good company if you did this - it's what the Facebook iPhone app does (and many others).
Note: the iPad Facebook app does put some browser controls on the RHS of the nav bar, because there's enough room.
You should use a toolbar, but set controller.hidesBottomBarWhenPushed = YES on the web view controller, so that your tab bar is not visible while in the web view.
You should probably also use https://github.com/samvermette/SVWebViewController and save yourself a lot of time ;)
Related
I have an interesting problem. I have an app that I'm developing that involves photos so screen space is at a premium. Also, using disappearing and reappearing nav / tool bar controllers (like in the camera app) doesn't make sense for me. In a perfect world, I'd use a UITabBar to switch between the 4 main navigational view controllers that my program implements, however I also am going to need space for a toolbar right on top of the tab bar most of the time. These two components take up too much space between the two of them so I need a way to save some space.
That's where I came up with the idea of using a toolbar to implement the functionality of both the TabBar and ToolBar. On the left side of the ToolBar would be the 4 buttons that allow access to my 4 main navigational view controllers. The one that is currently on the window would have it's button depressed. Then there would be a divider, and on the right side of the tool bar would be buttons specific to whatever view is currently on the window.
Anyhow, I'm just wondering if anyone has any clever ideas on how they'd implement this?
wat do u mean by left and right of toolbar??? adding a tab bar will not affect ur view size. when adding a toolbar, well yes it does affect ur view size.
my idea wolud be add a toolbar to the top of ur view and u can make it visible only when the user taps on the screen. until then keep the toolbar hidden. when the user clicks for the second time on the screen hide ur toolbar. this way u can have the whole view for ur pics and also have a toolbar for giving options.
I am working on a project which involves both kind of applications ie Navigation based and Tab based. All things are working perfectly. But what I want is, when I click on a particular tab then a button must be added to the navigation bar at the top to edit the table below it. I am able to draw the button but it is not affecting the tableview below it. When I do this in navigation based application it works perfectly. But it does not work in tab based.
So please tell me the way to add button at navigation bar in UI tab based application which appear only at particular tab.
tell me the sample code or any tutorial for it.
For each tab embed a UINavigationConrtoller, and your own view controllers in them.
This way each tab will have its own navigation bar, and thus can have their own sets of bar items, titles, etc.
You generally never want to embed a UITabBarController in a UINavigationController, always the other way around.
I'm building an iPhone app and I'm sort of confused about which approach should I choose for views and controllers.
I would like to have a tabbar at the bottom with three options. I would also like to have a main view displayed when the app shows (along with the tabbar) but I don't want this view to be part of the tabbar options.
So, when the app begins, the tabbar has no option selected but the main view displayed. When a tabbar options is selected, in its top bar it should display a back button to the main view. When the back button is pressed, the main view display again with no tabbar option selected.
Which approach should I choose?
Hope it makes sense.
Thanks.
I understand what you're trying to do, but you shouldn't do that. I don't like that design at all. You should have one navigation controller for each tab.
You should probably read Apple's Human Interface Guidelines as it's possible they would reject your App if they thought such an implementation with a TabBarController was confusing.
As an alternative, you could possibly have the "main view" as you call it accessible with a button in the Navigation bar at the top and then add that to all three tabs. Not necessarily a better design but you probably wouldn't be breaking the guidelines.
A better alternative might be to use a UIToolBar at the bottom instead of the Tab bar which has the three buttons spawning your views modally which can then be dismissed as you suggest.
Remember though, your App's users have built up a knowledge of how App's are generally supposed to navigate, feel and control so you should think carefully before deciding to go against that.
Firstly, I think you should reconsider giving your Main View it's own tab. That way it's a no-brainer for the user to return to that screen. BUT, if you STILL don't like that idea, read on...
The UITabBarController has the unfortunate side effect of not being able to be removed once created (even if you delay it's creation by instantiating it programmatically).
SO...
Option 1: Make your MainView a modalPresentation sub-view, displaying it ON TOP of one of the views in your tab bar (hiding the tabs until you're ready to show them again).
Option 2: Give a subview of your first tab a...
mySubViewController.hidesBottomBarWhenPushed=YES;
This will make the UITabBarController disappear temporarily (just on that view, until you're ready to show the tabs again).
Both options seem kinda messy to me, but they are possible. Depends on how well you execute them, I suppose.
Hope this helps!
You could add the main view as another tab.
OR
You present the main view modally when the app starts over the tab bar views.
The first option would be used more if the view holds the same kind of content as the tabs, for example if the app was an online store, the tabs would be Categories, Search and Recently Added, with what you call the "main view" being the Home page (showing offers or something). (So all the views/tabs would be showing products on the store)
The second option would be more if the content of the main view is different to the tabs.
Keeping with the online store example, if the tabs were Categories, Search and Recently added and what you call the "main view" being a login/logout screen. (so the tabs would be showing products, but the modal view ("main view") being more admin related, and it's main purpose not being to display products.
I have a UIWebView controller that loads a web page and I would like to add some kind of a bar at the top of the page with refresh and close buttons.
The bar should hide when the page loaded and should show again if the user taps the top part of the page.
Does anyone know how to approach it? Is there any simple way to do that?
UPDATE:
I think I wasn't clear enough with the question, so here are some clarifications:
1. The applications is a standard application that one of the flows opens UIWebView that loads a web page
2. What I'm looking for is a bar that will slide down on top of the web page (loaded in UIWebView) and should help the user overcome a scenario where the web page is not loaded for some reason
3. The bar should hold the back (just close the UIWebView) and refresh (reload UIWebView) operations.
Hope it helped.
Thanks,
Shimix
I'm working on something like this right now and so far, here's what I've come up with. Some of this may be obvious, but important:
Your address bar should be the left navigationItem.
The search bar is the rign navigationItem.
You should animate a cancel button in/out when beginning/ending editing in the URL box.
Safari Mobile uses the Prompt property of the navigationBar to display webpage titles.
To animate the widths of the search/URL bars, use UIView animation when the bar is selected.
It's pretty simple to add a UIToolbar above the webview with UIBarButtonItems that call the webview's refresh, back, and forward methods. You can also add the webviewdelegate methods to your view controller to detect when the page has finished loading and hide/show the toolbar that way.
If you want the refresh and navigation controls to be displayed as part of the html content of the webview itself, that's a littler tricker, but not impossible. You can use the webview's shouldLoadRequest delegate method to detect that those buttons have been tapped, and then take the appropriate action within your viewcontroller. Hiding and showing the nav bar would have to be handled in javascript.
Unless I'm missing a library/project doing this, I don't think there is a simple way to do this.
I have already coded something similar to Safari mobile address bar, and from memory, it involved using private apis and/or playing with the "not so private but use at your own risks" UIWebView subviews hierarchy...
I want to show more tahn four tab bar item on tab bar controller by scrolling tab bar . is it possible in iphone if it is.. please give the exact solution.??
Hoping your positive response
The iPhone SDK creates a kind of "favourites" option automatically, so the user can drop their favourite icon to the tabbar..
Maybe you can extend the UITabbar and implement a "scrolling/swiping" mechanism, but I suggest you not to do that. This because swiping on a menu (tabbar) can be really annoying for the end user and they probably drag their "most-use" icons to the tabbar so don't worry about that. My advise: Save your time, and put it into more interesting features for your app instead of spending hours figuring out how to make a scrolling tabbar...
You can also make your own UIView and "duplicate" the tabbar, so it looks like a tabbar but it actually isn't, but again that's a complete different approach...