开发者

Any "non TabBar-template" based tutorial on how to add a UITabBar?

开发者 https://www.devze.com 2023-04-04 23:52 出处:网络
I would like to add a TabBar to an existing view-based application I already started just to allow the user to switch to other parts of the app like the \"About\" section and another section entitled

I would like to add a TabBar to an existing view-based application I already started just to allow the user to switch to other parts of the app like the "About" section and another section entitled "Saved Searches" to display a navigational content (sav开发者_运维问答ed searches list > specific search result > product details).

Any idea on how to do this ? All tutorials I found point me directly to a TabBar template.

Thx for helping,

Stephane


You could start off with the UITabBar Application Template and you'll realize it's very easy to do:

In your UIApplicationDelegate class, in the method

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Instantiate a UITabBarController like this:

UITabBarController *tabBar = [[UITabBarController alloc] init];

Then you set the view Controllers that will appear on the tab bar:

tabBar.viewControllers = viewControllers;

Which is a NSArray you can previously create with your UIViewController subclasses:

NSArray *viewControllers = [[[NSArray alloc] initWithObjects:vc1, vc2, vc3, nil] autorelease];

After this, you only have to set it as the root view controller of the window, or add it as a subview (it has the same effect, but the first approach doesnt work prior to iOS 4)

self.window.rootViewController = tabBar;

or

[self.window addSubView:tabBar.view];

And then

[tabBar release];

To achieve the kind of navigation that you say in your question, the view controllers you set to the tabBar should be instances of UINavigationController, which are very easy to create like this:

UINavigationController *vc1 = [[UINavigationController alloc] initWithRootViewController:firstViewControllerPage];

And inside them, you can push (navigate to) other view controllers doing:

[self.navigationController pushNavigationController:anotherViewController animated:YES];

Hope this brief review of it makes it a bit clear :)


You can create a new UITabBarController, and add it's view as a subview of your applications window. Then, add your other view controllers (for your "About" and "Saved Searches" sections) to that tab bar controller.

This can be done most easily in Interface Builder. In your MainWindow.xib, drag a Tab Bar Controller object onto the canvas. This will automatically create a tab bar with two items (one for each of the view controllers added). For each view controller under the tab bar controller, go to the identity inspector and change its class to your custom view controller subclass. Then, show the attributes inspector and there is a field "NIB Name" - again, set this to the appropriate nib name. Your custom controller views will then be loaded from their corresponding nib files. All that's left to do is name each tab in Interface Builder, and give it a graphic.

You can also do this programmatically if you don't like IB, by assigning the custom view controllers to the tab controller's viewControllers property, and assign a selectedViewController.

Hope this helps.

EDIT

Thought it might be helpful to show a little hierarchy! Your MainWindox.xib structure might look something like this:

  • AppDelegate
  • UIWindow
  • UITabBarController
    • UITabBar
    • AboutViewController (view loaded from "AboutViewController.xib")
      • Tab Bar Item - About
    • UINavigationController
      • Navigation Bar
      • SavedSearchesViewController - Root View Controller (view loaded from "SavedSearchesViewController.xib"
      • Tab Bar Item

And push appropriate view controllers from SavedSearchesViewController as normal to provide navigation content.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号