ios 如何以编程方式添加 UITabBarController(无 xib 文件或故事板)

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18826125/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 01:14:42  来源:igfitidea点击:

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

iphoneiosuitabbarcontroller

提问by Hassan Zaheer

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

我想在UITabBarController我的应用程序中添加一个。但我只能用代码来做。没有 xib 文件或故事板。如何完全通过代码做到这一点?

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];

回答by user1673099

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

TABBAR 的图标

In your ViewController.m file do as follow:

在您的 ViewController.m 文件中执行以下操作:

- (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;
}

回答by Jitendra

Add this code in your AppDelegate.m

在您的 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];
}

回答by J-Dizzle

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

这是来自Swift 中user1673099的代码(顺便说一句,不错的用户名...;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;
}