简体   繁体   中英

How to add UITabBarController programmatically (no xib file or storyboard)

I want to add a UITabBarController to my application. But I have to do it with code only. No xib files or storyboards. How to do this entirely through code?

EDIT:

_tbc = [[UITabBarController alloc] init];
aboutUsView = [[AboutUsView alloc] init];
helpView = [[HelpView alloc] init];
optionsView = [[OptionsView alloc] init];
self.navCon = [[UINavigationController alloc] initWithRootViewController:optionsView];
            [self setnavigationCon:self.navCon];
            [optionsView setdataLayer:self];
if ([navCon.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
      UIImage *image = [UIImage imageNamed:@"Navigation Bar_reduced.png"];
      [self.navCon.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
      [optionsView addSelfView:window];
}
_tbc.viewControllers = [NSArray arrayWithObjects:navCon, aboutUsView, helpView, nil];
[window addSubview:_tbc.view];

Try this

AppDelegate.h

@interface AppDelegate : UIResponder <UITabBarControllerDelegate>
@property (strong, nonatomic) UITabBarController *tabBarController;

AppDeleGate.m


        UINavigationController *nc1;
        nc1 = [[UINavigationController alloc] init];
        [nc1.navigationBar setTintColor:[UIColor blackColor]];


        UIViewController *viewController1 = [[[FirstScreen alloc] initWithNibName:@"FirstScreen_ipad" bundle:nil] autorelease];
        nc1.viewControllers = [NSArray arrayWithObjects:viewController1, nil];

        UINavigationController *nc2;
        nc2 = [[UINavigationController alloc] init];
        [nc2.navigationBar setTintColor:[UIColor blackColor]];
        UIViewController *viewController2 = [[[FullList alloc] initWithNibName:@"FullList_ipad" bundle:nil] autorelease];;
        nc2.viewControllers = [NSArray arrayWithObjects:viewController2, nil];


        UIViewController *viewController3 = [[[FavouriteView alloc] initWithNibName:@"FavouriteView_ipad" bundle:nil] autorelease];
        UINavigationController *nc3;
        nc3 = [[UINavigationController alloc] init];
        [nc3.navigationBar setTintColor:[UIColor blackColor]];

        nc3.viewControllers = [NSArray arrayWithObjects:viewController3, nil];

        UIViewController *viewController4 = [[[UpcomingFights alloc] initWithNibName:@"UpcomingFights_ipad" bundle:nil] autorelease];
        UINavigationController *nc4;
        nc4 = [[UINavigationController alloc] init];
        [nc4.navigationBar setTintColor:[UIColor blackColor]];

        nc4.viewControllers = [NSArray arrayWithObjects:viewController4, nil];


        self.tabBarController = [[[UITabBarController alloc] init] autorelease];

        self.tabBarController.viewControllers = [NSArray arrayWithObjects:nc1, nc2,nc3,nc4 ,nil];



 self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];

ICON FOR TABBAR

In your ViewController.m file do as follow:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self.title = NSLocalizedString(@"YOUR View NAME", @"YOUR VIEW NAME");
    self.tabBarItem.image = [UIImage imageNamed:@"YOUR IMAGE NAME"];
 return self;
}

Add this code in your AppDelegate.m

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

   FirstViewController * fvc=[[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];

   SecondViewController * svc=[[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];


   ThirdViewController * tvc=[[ThirdViewController alloc]initWithNibName:@"ThirdViewController" bundle:nil];

   FourthViewController * fvc2=[[FourthViewController alloc]initWithNibName:@"FourthViewController" bundle:nil];


   tabbar=[[UITabBarController alloc]init];

   tabbar.viewControllers=[NSArray arrayWithObjects:fvc,svc,tvc,fvc2,nil];

   [self.window addSubview:tabbar.view];
}

Here is the code from user1673099 in Swift (nice username btw... ;0) -

func initialize_tabs() {

    var ncArr : [UINavigationController] = [UINavigationController]();

    for _ in 0...3 {

        let nc : UINavigationController = UINavigationController();
        let vc = UIViewController();

        nc.viewControllers = [vc];

        let v : UIView = UIView(frame: UIScreen.mainScreen().bounds);

        let redC   : CGFloat = CGFloat(arc4random_uniform(255))/CGFloat(255);
        let greenC : CGFloat = CGFloat(arc4random_uniform(255))/CGFloat(255);
        let blueC  : CGFloat = CGFloat(arc4random_uniform(255))/CGFloat(255);

        v.backgroundColor = UIColor(red: redC, green: greenC, blue: blueC, alpha: 1);

        let l : UILabel = UILabel(frame: UIScreen.mainScreen().bounds);
        l.text = "Test Label";
        l.textAlignment = .Center;
        v.addSubview(l);

        vc.view = v;

        ncArr.append(nc);
    }

    self.tabBarController = UITabBarController();

    self.tabBarController.viewControllers = ncArr;

    return;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM