1.导航类型

UINavigationController 适用于父子页面的跳转

UITabBarController 适用于平级页面的跳转

2.presentViewController / dismissViewControllerAnimated和pushViewController / popViewController

(1)只有从UINavigationController导航过来的UIViewController 才可以使用pushViewController / popViewController,从其它导航进入的只能使用presentViewController / dismissViewControllerAnimated

(2)如果A界面是通过presentViewController进入的,那么在A界面里只能使用presentViewController导航,如果A界面是通过UINavigationController包装了一层进入,则可使用pushViewController导航。

(3)如果A界面是一个UITabBarController,进入时是通过presentViewController来导航的,那么子Tab里也只能通过presentViewController来导航,如果进入时是通过UINavigationController包装了一层进入,则可使用[self.tabBarController.navigationController pushViewController:abcdViewController animated:true];这种方式导航。

3.修改UINavigationController导航进入后导航栏的图标及文字

UIBarButtonItem* leftBar = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(homeBack)];

self.navigationItem.leftBarButtonItem = leftBar;

//可添加多个导航按钮

//    self.navigationItem.leftBarButtonItems = nil;

//同样右边的导航按钮也可以设置

4.创建UITabBarController时需注意,要先创建出来,然后通过UINavigationController包装后才能显示,否则tab子项不显示。创建格式如下

Java代码  
  1. TabOneViewController* oneVC = [[TabOneViewController alloc]init];
  2. oneVC.view.backgroundColor = [UIColor whiteColor];
  3. UITabBarItem* item1 = [[UITabBarItem alloc]initWithTitle:@"tab1" image:nil tag:0];
  4. oneVC.tabBarItem = item1;
  5. TabTwoViewController* twoVC = [[TabTwoViewController alloc]init];
  6. UITabBarItem* item2 = [[UITabBarItem alloc]initWithTitle:@"tab2" image:nil tag:1];
  7. twoVC.tabBarItem = item2;
  8. HomeViewController* homeVC = [[HomeViewController alloc]init];
  9. NSArray* array = [[NSArray alloc]initWithObjects:oneVC,twoVC, nil];
  10. homeVC.viewControllers = array;
  11. UINavigationController* navVC = [[UINavigationController alloc]initWithRootViewController:homeVC];
  12. [self presentViewController:navVC animated:YES completion:^{}];
  13. //下面这种创建了HomeViewController后,HomeViewController下的子Tab不能通过push或者pop导航
  14. //    HomeViewController* homeVC = [[HomeViewController alloc]init];
  15. //    [self presentViewController:homeVC animated:YES completion:^{}];

5.UITabBarController各页面之间的切换

实现UITabBarControllerDelegate协议

//实现协议方法,用于切换Tab时,更改页面的标题
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {NSInteger index = tabBarController.selectedIndex;NSString *title;switch (index) {case 0:title = @"Message";break;case 1:title = @"User List";break;}self.title 

参考文章:http://www.tuicool.com/articles/J7nIVbN

转载于:https://www.cnblogs.com/yangqinglong/p/5526269.html

导航 navigationbar 与 tabbar相关推荐

  1. iOS 准确获取 iPhone 状态栏、导航栏、TabBar高度,看这篇就够了

    前言 最近在项目开发的时候,发现项目提供的获取 「状态栏+导航栏高度」的方法,在 iPhone 12 系列机型上是错误的.解决了这个问题之后,决定做个简单的总结,于是有了这篇文章. 本文主要是分析了遇 ...

  2. 最全最准确获取iOS 状态栏、导航栏、TabBar高度

    前言 最近在iPhone 12 系列机型上开发项目时,发现使用项目提供的获取状态栏.导航栏高度方法获取到的高度是错误的,随后跟踪排查最终解决这个问题,所以自己想简单的总结一下问题原因和解决办法. 本文 ...

  3. iOS去除导航栏和tabbar的横线

    导航[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetri ...

  4. android系统定制开发动态显示隐藏虚拟按键虚拟导航Navigationbar

    新需求:删除Android 原生自带的虚拟导航按键(暂定) 如想直接删除不显示Navigationbar,可以用如下两个方法 1)在资源xml文件中把导航按键的高度和宽度设置为0 frameworks ...

  5. [转载]uni-app 换肤实现-原生导航栏、tabbar和页面全部替换

    通过全局缓存参数设置当前主题: 换肤代码如下 setSkinme(theme) {uni.setStorageSync("theme", theme)uni.showModal({ ...

  6. QML 实现导航栏 类似于TabBar

    利用QML实现导航栏的功能.可以自己修改相关的样式,实现完全的自定制. 代码如下 BaseButton.qml import QtQuick 2.6 import QtQuick.Controls 1 ...

  7. 同一个页面同时拥有collectionView和navigationBar和tabBar时可能遇到的问题

    写一个页面的时候,遇到了页面加载时候collectionView的最下面少了49个像素的位置,切换去别的页面之后,再返回,又变回正常,多方求解无果后,发现原来是系统自带的适应功能导致的,加入以下代码即 ...

  8. 【Flutter】顶部导航栏实现 ( Scaffold | DefaultTabController | TabBar | Tab | TabBarView )

    文章目录 一.Scaffold 组件 二.实现顶部导航栏 三.DefaultTabController 导航标签控制组件 四.TabBar 导航按钮组件 五.Tab 标签组件 六.TabBarView ...

  9. 微信小程序入门二:底部导航tabBar

    小程序底部导航栏组件tabBar,可以参考下官方的API:tabBar 先看代码 //app.json {"pages":["pages/index/index" ...

  10. 微信小程序不同身份登录,显示不同的tabbar(导航栏)

    微信小程序,不同身份登录不同的底部导航栏.初次遇到这个问题,菜鸟的我没有一丝丝头绪,看了几篇博客后,终于明白了.下面是总结的模板,拿去直接用就欧克. 比如一个小程序需要两个版本(用户版.商家版),并且 ...

最新文章

  1. Linux和unix中 awk 的print浅谈
  2. string 中的offset_Kafka+Spark Streaming管理offset的几种方法
  3. 暴雪还不赶快?劳拉与光之守护者PC平台登陆
  4. python基础之语句_P009 python基础之控制语句01
  5. 华硕和梅林系统哪个好_RUSHCRM:定制CRM软件系统哪个好?
  6. 设计模式 - 状态模式、职责连模式
  7. php接收ajax的表单数据,怎样用Ajax提交表单并接收其中的json数据
  8. 2021-05-06
  9. 【Fltk】Fltk1.3.3+VS2015 编程
  10. 中仪股份管道机器人_中仪股份_X5-HW_管道检测机器人
  11. wps怎么统一修改标点符号_标点符号采用宋体全角 wps标点统一全角
  12. Java应用中CPU使用率过高该怎么解决
  13. 个位数字加百位数字等于千位数字加上十位数字,且该该数为奇数
  14. 从 BeReal 爆火背后,探秘图片社交新范式
  15. android平板电脑 微信,安卓微信重大更新,手机和平板可同时登录
  16. 阿里云服务器部署项目邮箱发送功能465端口报错
  17. 图像特征之SURF特征匹配
  18. java之学习记录 5 - 1 - 模拟拉勾项目介绍与后台系统搭建
  19. 来自#Devoxx 2014的WebSocket螺母和螺栓的幻灯片
  20. java中result的作用_JAVA中的Resultset

热门文章

  1. EPSViewer Pro for Mac(矢量图浏览工具)
  2. DropDMG for Mac(dmg打包软件)
  3. 使用VLC Media Player 在Mac上修剪视频
  4. WavePad如何在音乐文件上录制声音
  5. Unfolder使用教程:如何插入,删除和更新对象
  6. 在SketchUp草图大师中创建第一个3D模型
  7. Aria2 基础配置及下载设置
  8. Installation of Requests
  9. iOS内存管理学习笔记二
  10. 编码之道:是谁制造了混乱