陈述:我们在使用tabbarController的时候,我们总会和NavagationController联合起来。但是不联合的时候又是什么样的一种pool的情况呢?我们就单单的 TabBarController  来进行介绍。最后复习一下两个空间结合起来达成的完美效果

、、-----------------单独的TabbarController的使用

1.我们先使用TabbarController 来进行view的创建

由于h文件中没什么内容,我们就直接跳转到代理的实现文件吧

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];// Override point for customization after application launch.self.window.backgroundColor = [UIColor whiteColor];LCFirstViewController *firstVC = [[LCFirstViewController alloc]init];LCSecondViewController *secondVC = [[LCSecondViewController alloc]init];NSArray *array = [NSArray arrayWithObjects:firstVC,secondVC, nil];UITabBarController *tabBarVC = [[UITabBarController alloc]init];tabBarVC.viewControllers = array;[self.window setRootViewController:tabBarVC];[self.window makeKeyAndVisible];return YES;
}

可以看得出,我们把两个VC文件封装成了一个 Array的组,然后放到 UITabBarController的viewControllers下。这样子来说,我们的两个视图就做好了,我们运行之后,可能会发现我们的APP 竟然是空白一片。好了,我忘记说了,我们可以设置一些标志。button什么的都是temp的。

那么我们如何设置我们的item名字为 一个有意义的名字呢 ?

2.看看我们的firstViewController的init,你就明白了

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {// self.title = @"first";self.tabBarItem.title = @"firstView";self.tabBarItem.image = [UIImage imageNamed:@"1.png"];}return self;
}

你可能会惊讶,我们的h m文件中都没有 tabbarItem,但是为什么self之后就能出现呢?

因为这是apple因为为我们封装好的框架,但是我们没有使用的时候,是hidden的。有的时候,必须设置成 no才可以的。

如果你把我注释的  self.title = @“first”去掉注释,然后去掉 下面的那句,那你就会发现, 我们的item的名称就会变化。这是为什么么?self.title有什么牛逼的作用?我们在导航介绍完之后就会告诉大家。别着急哦

//导航控制器和 TabBarController的综合使用

3.现在我们就修改一下,delegate.m中的一些代码,来实现综合使用吧

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];// Override point for customization after application launch.self.window.backgroundColor = [UIColor whiteColor];LCFirstViewController *firstVC = [[LCFirstViewController alloc]init];LCSecondViewController *secondVC = [[LCSecondViewController alloc]init];UINavigationController *navFirstVC = [[UINavigationController alloc]initWithRootViewController:firstVC];UINavigationController *navSecondVC = [[UINavigationController alloc]initWithRootViewController:secondVC];NSArray *array = [NSArray arrayWithObjects:navFirstVC,navSecondVC, nil];UITabBarController *tabBarVC = [[UITabBarController alloc]init];tabBarVC.viewControllers = array;[self.window setRootViewController:tabBarVC];[self.window makeKeyAndVisible];return YES;
}

其实很简单,我们只是修改了 我们的数组里面的 vc的属性,从原来的 vc到现在的nvc(NavigationVC)。这一下子,我们就让一个vc有了导航栏的属性。

来,看看效果吧

4.看完之后,你也许就会问,1.2的差别好大呢,差别到底在哪里呢?

我们来看看 1.2m的init方法吧,对比才有好坏~

1.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {self.title = @"first";self.tabBarItem.title = @"firstView";self.tabBarItem.image = [UIImage imageNamed:@"1.png"];}return self;
}

2.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {self.tabBarItem.title = @"secondView";// Custom initialization}return self;
}

看到2的时候,你觉得 为什么设置了title,却没有显示呢 ?

就此问题,我试验了四次,终于明白了

1)只设置一项,是不出现的。上述代码已验证

2)设置导航的title,只出现了导航的title。

3).设置成 self.title,都出现。

4).tabbarItem.title和image一同设置,全部出现。

5).如果我们设置了self.title,再次设置self.tabbaritem.title,就会发现两者可以不一样了。

3.现在就我觉得需要声明的几点总结一下:

i:你写代码加入image的时候,你会发现我们的image都是像图示的 蓝色方框,并不是我们需要的图片,这是因为tabbarItem需要的是一个没有背景的图片,而我们加入的却是有背景的。

ii:一般情况下,不要仅仅使用self.tabBarItem.title=  @“XXX”,因为我们会发现这行代码是不起作用的 ,要不我加入 image,要不我们再加入 self.title,这样子我们设置的显示才能成功。

iii:关于提示消息的提示、更新提醒.

IV:应用更新提醒

转载于:https://www.cnblogs.com/riasky/p/3471284.html

[课堂实践与项目]NavigationController与TabBarController的综合使用及易错点分析(包含消息提醒,app更新)...相关推荐

  1. [课堂实践与项目]IOS优先级的计算器

    这个计算器主要是使用数组进行实现的.虽然没有使用前缀后缀表达式,但是是一种方法o. .h文件 // // LCViewController.h // 具有优先级的calculator // // Cr ...

  2. 20155322 《Java程序设计》课堂实践项目 数据库-3-4

    20155322 <Java程序设计>课堂实践项目 数据库-3-4 数据库-3 实践要求 参考教材代码完成下面的要求,提交能连接到world的截图(有学号水印),并提交代码的码云链接.查询 ...

  3. WebRTC直播课堂实践:实时互动是核心

    随着低延时流媒体技术的不断进步,在线教育行业持续升温.本文来自七牛云在线教育行业解决方案专家 徐晶在LiveVideoStackCon2018大会中的演讲.在演讲中他阐述了基于WebRTC架构的低延时 ...

  4. 学生上课考勤系统jsp_基于jsp的学生课堂考勤-JavaEE实现学生课堂考勤 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的学生课堂考勤, 该项目可用各类java课程设计大作业中, 学生课堂考勤的系统架构分为前后台两部分, 最终实现在线上 ...

  5. # 20155337 2017-2018-1 《信息安全系统设计基础》第二周课堂实践+myod

    20155337 2017-2018-1 <信息安全系统设计基础>第二周课堂实践+myod 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...

  6. 【软件工程实践 · 团队项目】 第一次作业

    [软件工程实践 · 团队项目] 第一次作业 Part 0 · 简 要 目 录 Part 1 · 队 伍 阵 容 Part 2 · 会 议 记 录 相 关 Part 3 · 会 议 讨 论 记 录 Pa ...

  7. 利用css实现太极图的制作(带旋转动画) (课程实践教学项目)

    利用css实现太极图的制作(带旋转动画) (课程实践教学项目) 简要说明 第一步:太极图的绘制(1) 相关知识: 实现步骤: 代码: 效果: 第二步:太极图的绘制(2) 相关知识: 实现步骤: 代码: ...

  8. 20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析

    20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析 项目名称 小说阅读器 项目功能 注册登录 用户信息.用户密码.用户图像修改 书籍分类 书架 书籍搜索(作者名或书籍名) ...

  9. OpenCV实践小项目(一): 信用卡数字识别

    1. 写在前面 今天整理一个OpenCV实践的小项目, 前几天整理了一篇OpenCV处理图像的知识笔记,后面,就通过一些小项目把这些知识运用到实践中去,一个是加深理解,另一个是融会贯通,连成整体,因为 ...

最新文章

  1. 利用 RDA5807的RSSI测量RF强度
  2. 内核分析PE获取DLL导出函数地址
  3. android推送如何推送不在线设备,推送系统从0到1(四):消息如何到达用户设备...
  4. unity shader 编辑器扩展类 ShaderGUI
  5. word如何设置长宽高_word怎么设计表格高和宽
  6. linux tcp客户端端口号,Linux网络编程--服务器客户端(TCP实现)
  7. 敏捷项目管理架构(APMF)
  8. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件
  9. 57个深度学习专业术语
  10. 微信小程序云开发教程-小程序代码发布和上线运行
  11. 每日一题 PAT 甲级1001 格式化输出
  12. Qt控件背景图片自适应
  13. 计算机组成原理与体系结构
  14. 第10章第4节:使用iSlide的统一色彩命令统一修改某个颜色 [PowerPoint精美幻灯片实战教程]
  15. 免费注册的域名.tk
  16. swing 绝对布局 窗口事件 鼠标事件 键盘事件 上传头像流程
  17. 计算 变异系数 标准差 标准偏差 相关系数 平滑指数 回归系数等C++ 模板类
  18. 《私募股权基金投资基础知识》---第七章
  19. 链接计算机网络密码错误,手机连不上路由器显示密码错误怎么办?
  20. python数据记录_python 数据处理中的记录

热门文章

  1. maven上传源码脚本
  2. 自定义标签报 无法为TAG [my2:hello]加载标记处理程序类[null]
  3. BZOJ 4720: [Noip2016]换教室
  4. Pycharm软件注册方法
  5. python中对列表和循环使用的小练习
  6. http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1895 二分
  7. private static final long serialVersionUID = 1L;详解
  8. [spring]Attribute scope must be declared for element type bean
  9. Oracle数据库升级与补丁
  10. ubuntu不启动图形界面