IOS菜鸟初学第二篇:实现APP底部导航栏(分栏控制器)

开发环境:xcode10.1,ios12.1

第六步优化,增加顶部导航栏,顺带解决跳转页面的时候的动画为水平左推,因为大部分iOS都是这样,用户已经习惯,反正我是看其他跳转动画极其变扭,推荐直接看下篇

1.创建一个项目

 

2.把自动创建的ViewController.h,ViewController.m删除

 学网上视频的,估摸着是不想跟后面的项目有冲突吧,其实是便于统一而已。菜鸟照做就好了。


3.再把info.plist中的main storyboard base file name 删掉

鼠标放在旁边有个”-“号,从没用过苹果电脑的我,找了好久的删除在哪,还是看视频学到的。

下图我已经删除了的样子:

增加一个地方:

菜鸟注意了:点击那个 + 号 ,弹出的下拉框中就能找到App Transport ...,在App Transport ...下再创建一个Allow Arb...,你需要先把App Transport ...前面的三角点一下,变成下面这个图的样子,你在点击 + 号就能在其子目录中创建item了,下拉框中选择Allow Arb...,将其右边的值改为yes。


4.创建3个UIViewController。

操作步骤:点击上图黄色文件夹,右键New File —> Cocoa Touch Class —>next —>

修改class命,选择uiviewcontroller类型 —>next —>create 

        

按上面的创建步骤,创建class名为VCSecond,VCThird。如下图: 

                                                                                   

 

5.在AppDelegate.m中包含之前创建的3个UIViewController

AppDelegate为整个应用的一个代理,提供程序启动、退出等类似监控的接口。做过小程序的话可以理解为小程序的app.json

                                                      

6.在AppDelegate.m的didFinishLaunchingWithOptions方法中添加如下代码

    //创建window
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
    //显示window
    [self.window makeKeyAndVisible];
    
    //创建控制器一
    VCFirst* vcFirst = [[VCFirst alloc] init];
    VCSecond* vcSecond = [[VCSecond alloc] init];
    VCThird* vcThird = [[VCThird alloc] init];
    
    vcFirst.title = @"首页";
    vcSecond.title = @"搜索";
    vcThird.title = @"个人";
    
    vcFirst.view.backgroundColor = [UIColor blueColor];
    vcSecond.view.backgroundColor = [UIColor yellowColor];
    vcThird.view.backgroundColor = [UIColor redColor];
    
    //创建分栏控制器
    UITabBarController* tbController = [[UITabBarController alloc] init];
    //设置分栏控制器整体颜色(选中状态)
    tbController.tabBar.tintColor = [UIColor colorWithRed:112.0/255.0 green:100.0/255.0 blue:225.0/255.0 alpha:1.0];
    //创建一个控制器数组对象
    //将所有的要被分栏控制器管理的对象添加到数组中
    NSArray* arrayVC = [NSArray arrayWithObjects:vcFirst,
                        vcSecond,
                        vcThird, nil];
    //将分栏视图控制器管理数组赋值
    tbController.viewControllers = arrayVC;
    
    //将分栏控制器作为根视图控制器
    self.window.rootViewController = tbController;
    
    //设置分栏控制器的透明度
    tbController.tabBar.translucent = NO;
    return YES;

优化代码:这一步,创建UINavigationController,将每个UINavigationController都放在UITabBarController中,这样在每个(VCFirst,VCSecond,VCThird)跳转页面就会用UINavigationController的pushViewController的跳转动画,向左推,如果用上一篇那样初始化,pushViewController将无法跳转,只能用prsentViewController跳转,然而他默认的跳转动画,是从下往上,如果你遇到这样的情况,就应该向上面一样用UINavigationController初始化UITabBarController。

//创建window
        self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
        
        //显示window
        [self.window makeKeyAndVisible];
        
        //创建控制器一
        VCFirst* vcFirst = [[VCFirst alloc] init];
        UINavigationController * nav1 = [[UINavigationController alloc]initWithRootViewController:vcFirst];
        nav1.navigationBar.barTintColor = [UIColor whiteColor];
        
        VCSecond* vcSecond = [[VCSecond alloc] init];
        UINavigationController * nav2 = [[UINavigationController alloc]initWithRootViewController:vcSecond];
        nav2.navigationBar.barTintColor = [UIColor whiteColor];
        
        VCThird* vcThird = [[VCThird alloc] init];
        UINavigationController * nav3 = [[UINavigationController alloc]initWithRootViewController:vcThird];
        nav3.navigationBar.barTintColor = [UIColor whiteColor];
        
        
        vcFirst.title = @"首页";
        vcSecond.title = @"搜索";
        vcThird.title = @"我的";
        
        vcFirst.view.backgroundColor = [UIColor whiteColor];
        vcSecond.view.backgroundColor = [UIColor yellowColor];
        vcThird.view.backgroundColor = [UIColor blueColor];
        
        
        //创建分栏控制器
        UITabBarController* tbController = [[UITabBarController alloc] init];
        
        //创建一个控制器数组对象
        //将所有的要被分栏控制器管理的对象添加到数组中
        NSArray* arrayVC = [NSArray arrayWithObjects:nav1,
                            nav2,
                            nav3, nil];
        //将分栏视图控制器管理数组赋值
        tbController.viewControllers = arrayVC;
        
        //将分栏控制器作为根视图控制器
        self.window.rootViewController = tbController;
        
        //设置分栏控制器的透明度
        tbController.tabBar.translucent = NO;
        return YES;

7.测试运行,

点击Xcode左上角的三角运行按钮运行,旁边正方形按钮是停止,再旁边就是可以选择模拟器的型号

                                  

等一会就会出现一个ip7p的魔模拟器了,放张gif:

                                                       

8.给各个栏添加图标icon

首先,你先去网上找一套你喜欢的icon,或者要你公司的前端给你,要他给你跟ios选中颜色一样的一套和原本灰色的一样,主要是保证选中时,icon与文字统一变色,类似微信的效果。

然后重名命图片名,建议英文名,格式为:xxx_11@3x.png(选中--蓝色) xxx_12@3x.png(未选中--灰色)

在xcode的Assets.xcassets中新建images文件夹,直接拖拉你的图片到images中,下图是如何创建images文件夹

                                        

或者右键images文件夹,选择import也可 

                                

最后一步:在VCFirst的viewDidLoad方法中添加如下代码:

UITabBarItem* tarBarItem = [[UITabBarItem alloc] initWithTitle:@"首页" image:nil tag:101];
    tarBarItem.image =[[UIImage imageNamed:@"WechatIMG5_11"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    tarBarItem.selectedImage =[[UIImage imageNamed:@"WechatIMG5_12"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBarItem = tarBarItem;

按照上面步骤对VCSecond和VCThird做同样的操作,但是要注意,“首页”和图片名要改为对应的文字和图片!!!

最后测试一下 大功告成:                                            

                                                

放一张第六步优化后的页面:

  

 

下一篇,讲解如何嵌套h5页面,敬请期待。。。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 控制器不存在:app\\controller\\Inspection。在iOS发中,视图制器是用来管理用程序界面的组件。它负责加载数据、控制用户交互以及管理视图的显示和隐藏。引用中提到,视图控制器不发送或接收数据,而是负责加载数据并将其展示给用户。引用中提到,在iPhone应用程序中,最常使用导航控制器来管理界面,在iPad应用程序中,主视图控制器通常是一个分栏视图控制器的子控制器。所以,根据提供的信息,控制器app\\controller\\Inspection不存在。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [View Controller Programming Guide for iOS---(四)---Creating Custom Content View Controllers](https://blog.csdn.net/bagu2018/article/details/102157578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [PID控制器(比例-积分-微分控制器)- II](https://blog.csdn.net/weixin_30484247/article/details/96939633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值