UI: 使用 UITabBarController 显示多视图控制器

假设有两个视图控制器,它们的分别为 FirstViewController 和 SecondViewControlller。 现在到 app delegate 中定义视图控制器和标签栏。代码如下:

.h:

#import <UIKit/UIKit.h>
#import "FirstViewController.h"
#import "SecondViewController.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic ,strong) FirstViewController *firstViewController;
@property (nonatomic ,strong) SecondViewController *secondViewController;
@property (nonatomic ,strong) UITabBarController *tabBarControllser;
@end

.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    [self.window makeKeyAndVisible];
    [self createViewControllers01];
    return YES;
}

-(void)createViewControllers01{
    //1
    FirstViewController *firstVC = [[FirstViewController alloc]init];
    UINavigationController *navfirst = [[UINavigationController alloc]initWithRootViewController:firstVC];
    //2
    SecondViewController *secondVC = [[SecondViewController alloc]init];
    UINavigationController *navSecond = [[UINavigationController alloc]initWithRootViewController:secondVC];

    //UINavigationController控制器数组
    NSArray *arrayNav = [[NSArray alloc]initWithObjects:navfirst,navSecond, nil];
/*************************/
    UITabBarController *tbc = [[UITabBarController alloc]init];
    tbc.viewControllers = arrayNav;
    self.window.rootViewController = tbc;
}

如果视图多的时候,另一种方法:

- (void)createViewControllers02{
    //视图数组
    NSArray *arrayVC = [NSArray arrayWithObjects:@"firstVC",@"secondVC", nil];
    //每个视图对应的颜色数组
    NSArray *colorVC = [NSArray arrayWithObjects:[UIColor redColor],[UIColor blackColor], nil];
    //每个视图对应的tabbar图片数组
    NSArray *tabBarImageTitle = [NSArray arrayWithObjects:@"tabbar_first",@"tabbar_second", nil];
    //每个视图对用的tabbar标题数组
    NSArray *tabbarTitle = [NSArray arrayWithObjects:@"一",@"二", nil];

    NSMutableArray *arrayTBC = [[NSMutableArray alloc]init];
    for (int i =0; i<arrayVC.count; i++) {
        //将字符串转换为某个抽象类
        Class cVC = NSClassFromString([arrayVC objectAtIndex:i]);
        //初始化后赋值给视图控制器对象
        UIViewController *vc = [[cVC alloc]init];
        //给视图控制器添加背景颜色
        vc.view.backgroundColor = [colorVC objectAtIndex:i];
        //初始化每个视图对应的tabBarItem并将其赋值给每个视图
        UITabBarItem *tabBarItem = [[UITabBarItem alloc]initWithTitle:[tabbarTitle objectAtIndex:i] image:[UIImage imageNamed:[tabBarImageTitle objectAtIndex:i]] tag:i+100];
        vc.tabBarItem = tabBarItem;
        //将每个视图加入视图控制器并存入数组
        UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
        [arrayTBC addObject:nav];
    }
    //初始化UITabBarController并对其赋值
    UITabBarController *tbc = [[UITabBarController alloc]init];
    tbc.viewControllers = arrayTBC;
}
时间: 2024-11-10 19:44:33

UI: 使用 UITabBarController 显示多视图控制器的相关文章

[Xcode 实际操作]三、视图控制器-(2)UITabBarController选项卡(标签)视图控制器

本文将为你演示,选项卡视图控制器的创建和使用. 在项目文件夹[DemoApp]上点击鼠标右键,弹出右键菜单. [New File]->[Cocoa Touch Class]->[Next]-> [Class]:FirstSubViewController [Subclass of]:UIViewController [Language]:Swift ->[Next]->[Create] 1 import UIKit 2 3 class FirstSubViewControll

swift UI专项训练5 定制视图控制器

我们现在已经添加了两个场景了,尽管我们有默认的视图控制器,但是我们还是想自己定制一下自己的控制器,我们之前一直在storyboard上做操作,现在来些一些代码. 在工程目录中右键选择new fie,在IOS的Source中选择Cocoa Touch Class,设置如下图: 点击Next,可以看到xcode给我们创建了一个继承了UIViewController的类: 选中新增餐馆的viewcontroller,然后在右边选中类编辑器,custom class中选择我们自己的类,选中后现在变成我们

UITabBarController — 标签视图控制器

UITabBarController - 标签视图控制器 UITabBarController 分为三层结构: (1).tab bar (2.)Custom Content (3.). Tab bar controller View UITabBarController 有以下重要属性: (1).viewControls 显示的视图控制器 (2).tabBar 标签栏 (3).delegate 代理 (4).selectedindex 选中某个tabBarItme UITabBar (1).ta

如何通过视图控制器UITabBarController实现界面的切换

以下代码实现各个View之间的切换. 创建UITabBarController, 创建视图控制器UIViewControlle 定义控制器的UITabBarItem 将UIViewController数组加入UITabBarController.viewControllers 将UITabBarController设置为窗口的根控制器 为方便看写到了一个文件,要编写每个页面的功能,可以创建继承于UIViewControlle的子类,并在它的init方法里实现一些想要实现的功能. UITabBar

iOS 视图控制器转场详解

前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标有了大幅度的增长,多谢唐巧前辈的推荐.有些人问我相关的问题,好吧,目前为止就几个,由于没有评论系统,实在不方便交流,但我也没把博客好好整理,一直都在简书上写博客,大家有问题请移步我的简书本文章的页面.关于交流,我想说这么几点: 1.问问题就好,不要加上大神大牛之类的称呼,与本文有关的问题我尽量回答:不负责解析转场动画,看心情回答. 2.去我的简书下留言是最有效的交流方式,要加我好友就

iOS视图控制器编程指南 --- 实现一个容器视图控制器

容器视图控制器是一种结合多个视图控制器的内容到一个单一的用户界面上的方式.容器视图控制器经常被用来使导航更方便,基于已经存在的内容创建一个新的用户界面类型.例如,在UIKit中的容器视图控制器包括UINavigationcontroller,UITabBarcontroller 和 UISplitViewcontroller,它们都可以使用户界面在不同视图部分之间的切换和导航更加的容易. 设计一个自定义的容器视图控制器 在几乎所有的方面,一个容器视图控制器就像其它任何一个内容视图控制器一样,它管

为何不能在viewDidLoad方法中显示其他视图

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可以使得当视图控制器(view controller)显示自身的时候显示分享选项控制器.你视图控制器的viewDidAppear方法将在它显示在屏幕上的时候被调用,并且在你App中的所有继承体系中的视图都是如此.这意味着你可以用这个机会在你的视图控制器视图上面显示其他视图. 不要试图在你的视图控制器的viewDidLoad方法中显示活动视图控制器(activ

Swift - iOS中各种视图控制器(View Controller)的介绍

在iOS中,不同的视图控制器负责不同的功能,采用不同的风格向用户呈现信息.下面对各个视图控制器做个总结: 1,标准视图控制器 - View Controller 这个控制器只是用来呈现内容.通常会用来作为子类,以向屏幕中添加逻辑. 2,导航控制器 - Navigation Controller 这个控制器呈现一个视图控制器的栈,应用程序可以在上面推入更多的视图控制器. 当新视图推入栈,或旧视图弹出栈时,导航控制器会以动画的形式(比如卷动)显示隐藏这些视图. 使用样例:系统“设置”应用程序 3,表

iOS视图控制器编程指南 --- 呈现一个视图控制器

有两种方法实现一个视图控制器到屏幕上:把它嵌入到一个容器视图控制器或者是直接呈现它.容器视图控制器提供一个应用程序主要的导航功能,但是present 视图控制器也是一个重要的导航工具.你可以直接使用presentation 在当前视图控制器的最上层显示一个新的视图控制器.典型地,当你想要实现模态界面的时候直接present 视图控制器,但是你也可以基于其它目的使用它们. 对呈现视图控制器的支持内建于类UIViewController中,而且对所有的视图控制器对象都是有效的.你可以在其它任何视图控