user1986984
user1986984

Reputation: 151

Have to apply tabbar for single view application

Iam using xcode4.2 i added 3 items for tabbar in singe view application .

The problem is i cant visualize the output instead of a black screen is shown on ios simulator

Can anyone help me please

my code is

@synthesize window = _window;
@synthesize viewController = _viewController;
@synthesize appNavigation = _appNavigation;  

- (void)dealloc
{
    [_window release];
    [_viewController release];
    [_appNavigation release];    
    [super dealloc];
}



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

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];

            UITabBarController *tabController = [[UITabBarController alloc] init];
            NSMutableArray *tabsArray = [[NSMutableArray alloc] init];
            `enter code here`ViewController *homeScreen = [[ViewController alloc] init];
            homeScreen.navigationItem.title = @"App Title";
            _appNavigation = [[UINavigationController alloc]initWithRootViewController:homeScreen];
            _appNavigation.tabBarItem.title = @"Home";
            [_appNavigation.tabBarItem setImage:[UIImage imageNamed:@"Home_Button.png"]];
            [tabsArray addObject:_appNavigation];
            [_appNavigation release];

            BookmarksViewController *bookMark = [[BookmarksViewController alloc] init];
            bookMark.navigationItem.title = @"Bookmarks";
            _appNavigation = [[UINavigationController alloc] initWithRootViewController:bookMark];
            [_appNavigation.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:2];
            _appNavigation.tabBarItem.title = @"Bookmarks";
            [tabsArray addObject:_appNavigation];
            [_appNavigation release];

            AppSettingsController *settings = [[AppSettingsController alloc] initWithStyle:UITableViewStyleGrouped];
            settings.navigationItem.title = @"Settings";
            _appNavigation = [[UINavigationController alloc] initWithRootViewController:settings];
            _appNavigation.tabBarItem.title = @"Settings";
            [_appNavigation.tabBarItem setImage:[UIImage imageNamed:@"Settings_Button.png"]];
            [tabsArray addObject:_appNavigation];
            [_appNavigation release];

            SearchViewController *searchView = [[SearchViewController alloc] init];
            searchView.navigationItem.title = @"Ranga";
            _appNavigation = [[UINavigationController alloc] initWithRootViewController:searchView];
            _appNavigation.tabBarItem.title = @"Search";
            [_appNavigation.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemSearch tag:4];
            [tabsArray addObject:_appNavigation];
            [_appNavigation release];


            tabController.viewControllers = tabsArray;


LoginViewController *loginView = [[LoginViewController alloc] init];

           [self.window addSubview:tabController.view];

[tabController presentModalViewController:loginView animated:NO];

    [self.window makeKeyAndVisible];
    return YES;
}


@end

Upvotes: 0

Views: 668

Answers (1)

swiftBoy
swiftBoy

Reputation: 35783

Just update your application code this way.

1. change in code

open AppDelegate.h file it should be like

#import <UIKit/UIKit.h>

@class FirstViewController,SecondViewController;


@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>


@property (strong, nonatomic) UIWindow *window;

//these two view controllers (screens) for adding to tabs.
@property (strong, nonatomic) FirstViewController *firstViewController;
@property (strong, nonatomic) SecondViewController *secondViewController;

//this will be the tab bar-controller
@property (strong, nonatomic) UITabBarController *baseTabBarController;

@end

now your AppDelegate.m file code should be like

#import "AppDelegate.h"    
#import "FirstViewController .h"
#import "SecondViewController.h"


@implementation AppDelegate

@synthesize window = _window;
@synthesize firstViewController;
@synthesize secondViewController;
@synthesize baseTabBarController;



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    // create tab bar
    baseTabBarController = [[UITabBarController alloc]init];

    baseTabBarController.delegate=self;

    // initialize first screen
    firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController " bundle:nil]; 
    UINavigationController *homeView = [[UINavigationController alloc]initWithRootViewController:firstViewController]; 
    firstViewController.title = @"Home ";

    // initialize second screen
    secondViewController = [[SecondViewController alloc] initWithNibName:@"FavViewController" bundle:nil];
    secondViewController.title = @"My Favourite";
    UINavigationController *favouriteView = [[UINavigationController alloc] initWithRootViewController:secondViewController];  

    //add both views in array
    NSArray *controllers = [NSArray arrayWithObjects:homeView,favouriteView, nil];
    //add array to tab bar  
    baseTabBarController.viewControllers = controllers; 
    //add tab bar to window
    self.window.rootViewController = baseTabBarController;


    [self.window makeKeyAndVisible];    

    return YES;
}

2. in UI change

now go to xib file for both view controller what we want to add TAB, just change this way in Interface builder

Bottom Bar = Tab Bar

enter image description here

that's it!! you will get two tab at the bottom of your application. enter image description here

Feel free to ask me if you have any question.

Upvotes: 1

Related Questions