关于UINavigationController

详解看大神们的:

http://www.cnblogs.com/smileEvday/archive/2012/05/14/2495153.html

有一个需求就是从第4个viewController中向第3个viewController中传值(最初是有第3个viewController中进入第4个)改变第3个页面中的button的title;

若是直接pop回第3个页面的话很明显不能改变title,因为此时不会重绘页面,只是从 self.navigationController.viewControllers中调了出来;

若是直接push回第4个,使用这种方式可以达到需求,但是若是3,4页面不断切换的话则self.navigationController.viewControllers中会不断添加,内存也不短增加,很明显内存优化方面考虑这是不合理的;

最好的方法是3进入4的时候重新设置self.navigationController.viewControllers

setViewControllers:animated:通过该属性我们可以实现一次性替换整个navigationController的层次, 这个过程如果通过setViewControllers:animated:来设置,并指定动画为YES的画,动画将会从当前的navigationController所显示的vc跳转到所设置的目标viewController的最顶层的那个VC,而中间其他的VC将会被直接从VC层级中移除和添加进来(没有动画)。

即:

NSArray *arrNew=[[NSArray alloc]initWithObjects:[MainViewController new],[RecordViewController new],[TimeViewController new],nil];

[self.navigationController setViewControllers:arrNew animated:YES];

这样即使来回切换

self.navigationController.viewControllers.count也是不会增多的,一直是4

时间: 2024-09-13 08:29:05

关于UINavigationController的相关文章

iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

转自:http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigationController可以翻译为导航控制器,在iOS里经常用到. 我们看看它的如何使用: 下面的图显示了导航控制器的流程.最左侧是根视图,当用户点击其中的General项时 ,General视图会滑入屏幕:当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕.相应地,在对象

ios UINavigationController

转自:http://www.cnblogs.com/ios8/p/ios-UINavigationController.html UINaviGationController通常被我们称为导航栏,他是视图与视图之间联系沟通的桥梁,一些著名的app都用到了他.下面我们来看一下如何建立一个navigation. 首先,我们通常新建工程是直接将视图控制器添加到window上,而现在有navigation以后,就多了一层:  Appdelegete.h: - (BOOL)application:(UIA

UINavigationController和UIBarButtonItem的例子

#import "AppDelegate.h" #import "FirstViewController.h" #import "SecondViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOption

iOS设计之 多视图导航栏UINavigationController切换视图的简单设计

在iOS平台上创建有个工程,之后在工程中创建两个类视图 操作步骤如下 1.在分别在两个类视图中对主视图设置背景色 FirstViewController.m #import "FirstViewController.h" @interface FirstViewController () @end @implementation FirstViewController - (void)viewDidLoad {    [super viewDidLoad];        //设置主视

UINavigationController导航控制器

UINavigationController导航控制器,是多个界面间跳转的重要元素,可以理解为它存储着多个viewController,它的存储结构是栈,栈的特点是先进后出,所以添加视图控制器时,要特别注意. UINavigationController有几个常用的方法: 1:[UINavigationController initWithRootViewController:viewController ] 是指将哪一个视图控制器设置为导航控制器的根视图控制器,即运行是第一次看到的界面. 2:

UINavigationController

1 #import "AppDelegate.h" 2 #import "RootViewController.h" 3 @interface AppDelegate () 4 5 @end 6 7 @implementation AppDelegate 8 9 10 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc

UINavigationController使用的注意事项

1.常用属性viewControllers //所有在栈中的控制器topViewController //栈顶控制器navigationBar //导航栏 竖屏下默认44,横屏默认32 2.对navigationBar的标题进行字体颜色等设置NSDictionary *dic = @{ NSForegroundColorAttributeName:[UIColor whiteColor] }; UIViewController.navigationBar.titleTextAttributes

UINavigationController使用详解

有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINavigationController是IOS编程中比较常用的一种容器view controller,很多系统的控件(如UIImagePickerViewController)以及很多有名的APP中(如qq,系统相册等)都有 用到.说是使用详解,其实我只会介绍几个自认为比较重要或者容易放错的地方进行讲解,下面让我们挨个探探究竟: 首先上一张图(来自苹果官

UINavigationController 、界面通信

一.UINavigationController 二.定制UINavigationBar 三.界面间通信 一.UINavigationController 导航控制器,是iOS中最常用的多视图控制器之一,它用来管多个视图控制器.导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的控制器. UINavigationController继承于UIViewController,以栈的方式管理所控制的视图控制器, 至少要有一个被管理的视图控制器,这个控制器我们称作,导航控制器的根视图控制器. 任

iOS架构-UINavigationController那些事

1. UINavigationController提供的功能 导航控制器提供在不同页面之间的导航功能, 包括: push back. 统一的导航栏. 导航的手势(侧滑后退) 统一的工具栏 导航控制器 导航控制器维护一个堆栈结构. 一层一层. 入栈操作对应push, 但是不会销毁之底部的控制器 出栈操作对应back, 会销毁顶部的控制器(减少一个引用, 如果你想保留也可以) back操作会很快, 因为不需要创建和加载视图.