最近想到的一个小需求:

首页切换:点击一个切换按钮,能实现首页的风格、排版等变换,原理是用一个新的VC替换掉。

效果如下:

  ====》====》

实现方式很简单:

以我的Demo为例,讲一下思路

1、将一下我的准备条件:底部是tabbarcontroller,每个里面装载一个Nav控制器

2、找到第一个tabbar,替换内部子控制器

核心代码实现:

构造一个新Nav

 let newVC = UIStoryboard(name: "CurriculumSchedule", bundle: nil).instantiateViewControllerWithIdentifier("CurriculumScheduleViewController")

 let navNew = UINavigationController(rootViewController: newVC)

替换

//0下标表示第一个
self.tabBarController?.viewControllers![0] = navNew

这里有几个注意点:

1、上面那样替换完之后,tabbar那边的title和image都是移除了的,需要重新添加一遍。

navNew.tabBarItem.setTitleTextAttributes(selectedTextAttribute, forState: .Selected)
navNew.tabBarItem.image = UIImage(named:image)?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
navNew.tabBarItem.selectedImage = UIImage(named: imageSelected)?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

这样几步做完,就可以实现需要的效果了。

当然,要加一些切换动画效果,大家可以自己自定义。。。

2、这样做完之后,原首页还是在内存里的,如果要来回切换,最好对两个首页管理一下,不要重复创建,如果内存已存在,直接取用即可,没有再创建。

有疑问可以留言,over~~  

  

iOS 切换首页-更改tabbar的容器控制器的更多相关文章

  1. iOS - 切换rootViewController时,销毁之前的控制器

    一.iOS在切换根控制器时,如何销毁之前的控制器?(切换rootViewController时注意的内存泄漏) 首先.在iOS的ARC机制下,任何对象,当没有其他对象对他进行强引用时,都会被自动释放. ...

  2. iOS 容器控制器 (Container View Controller)

    iOS 容器控制器 (Container View Controller) 一个控制器包含其他一个或多个控制器,前者为容器控制器 (Container View Controller),后者为子控制器 ...

  3. iOS更改tabbar图片渲染 —不让tabbat有蓝色的渲染 并修改文字

    方式一  代码实现 这种要写很多代码 ,每个控制器都要写   UIImage *image=[UIImage imageNamed:@"tabBar_friendTrends_click_i ...

  4. 【iOS发展-28】制造业UITabBarController标记控制器、定制UITabBarItem文字图像6途径和More评论

    一个.一个简单的制作过程(实际工程中不建议这样的方式,不要只展示所用原理的理解) 在AppDelegate.m在: - (BOOL)application:(UIApplication *)appli ...

  5. iOS切换window根控制器 (转)

    转自linfengwenyou 在运行过程中更改根控制器的方法:(假设:A为当前根控制器,B为要设的根控制器) 方法一: 1. appdelegate.m中 self.window = [[UIWin ...

  6. iOS 自定义UITabBarController的tabBar

               #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDeleg ...

  7. iOS 9 之后更改状态栏字体颜色

    设置statusBar的[前景部分] 简单来说,就是设置显示电池电量.时间.网络部分标示的颜色, 这里只能设置两种颜色: 默认的黑色(UIStatusBarStyleDefault) 白色(UISta ...

  8. 设置TabBar分栏控制器上图片的大小问题

    我们都知道,iOS因为屏幕分辨率的问题,UID在交付我们iOS开发人员程序配图的时候,一般是三套图,分别对应三种不同的分辨率,对不同size的屏幕系统会自动使用不同像素的图片,我们只需要在命名时给三套 ...

  9. ACE首页更改

    @{ Layout = null; } <!DOCTYPE html> <html lang="zh-cn"> <head> <meta ...

随机推荐

  1. Oracle位图索引

    索引由KEY和Data组成 位图索引的KEY比普通非唯一性索引多包含一个组成部分,分区,分区是将数据按行由内部机制分段以达到比较好的检索效率 位图索引的Data中,该索引KEY中数据值在分区段中按行分 ...

  2. HTTP的长连接和短连接

        本文总结&分享网络编程中涉及的长连接.短连接概念.     关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一.什么是长连接 HTTP1.1规定了默认保持长连接(HTT ...

  3. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构

    一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...

  4. Core Java 总结(字符和字符串类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...

  5. 现代3D图形编程学习-基础简介(2) (译)

    本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...

  6. 深入理解CSS过渡transition

    × 目录 [1]定义 [2]过渡属性 [3]持续时间[4]延迟时间[5]时间函数[6]多值[7]阶段[8]触发[9]API 前面的话 通过过渡transition,可以让web前端开发人员不需要jav ...

  7. BFC的形成条件和特性分析

    初学CSS时,我们学到很多有意思的CSS规则,比如外边距塌陷,还有浮动元素的一些特性等,其实这些规则背后都是BFC这个东西在控制,下面我们来看下BFC到底是什么. 什么是BFC BFC(Block f ...

  8. SSH(Struts2+Spring+Hibernate)框架搭建流程

    添加支持 我先介绍的是MyEclipse9的自带框架支持搭建过程:(完全的步骤 傻瓜式的学习..~) 首先我们来搭建一个Web项目: 一.Hibernate(数据层)的搭建: 相关描述 Ⅰ.服务器与数 ...

  9. 控制反转、依赖注入、Unity容器

    控制反转原则 依赖注入 Install-Package Unity:https://www.nuget.org/packages/Unity/ Github:https://github.com/un ...

  10. C#实现微信开发前奏

    不想废话,直接写了!因为是留给自己做随笔的,所以大神们看到别喷…… 1.必须有微信公众账号 2.你也可以申请测试微信号,链接给你   http://mp.weixin.qq.com/debug/cgi ...