ios 说一说UINavigationController 的堆栈
iOS的界面堆栈管理比android的要好用很多。
这里写两点:一点是 如何重回前面的vc,而不是push一个alloc的新界面。第二点就是判断当前堆栈显示的vc是何vc。
vc堆栈:
vc1->vc2->vc3->vc4->vc5
vc1是底层的堆栈,push到vc2,vc2在push到vc3,vc3在push到vc4,vc4在push到vc5
如果我想在vc5界面,重新回到vc2呢?千万别重新 alloc,重新alloc的vc和原来的vc2不等。我们要拿到UINavigationController堆栈中的vc2,
BOOL isExist = NO;
for (id VC in [kAPPDELEGATE.mynavigationController viewControllers]) {
if ([VC isKindOfClass:[WashingViewController class]]) {
[kAPPDELEGATE.mynavigationController popToViewController:VC animated:YES];
vc_wash = (WashingViewController *)VC;
isExist = YES;
break;
}
}
这里红体字 popToViewController:VC 作用就是将堆栈中vc后面的vc3,vc4,vc5全部清掉,变成vc1->vc2。
2).如果想要判断当前堆栈显示的是否是vc2,该如何判断呢?
if ([[kAPPDELEGATE.mynavigationController topViewController] isKindOfClass:[WashingViewController class]]) {
vc_wash = (WashingViewController *)[kAPPDELEGATE.mynavigationController topViewController]; }
topViewController 可以判断最上面的vc是否是我们想要显示的。
ios 说一说UINavigationController 的堆栈的更多相关文章
- IOS 学习 开发 自定义 UINavigationController 导航
文件目录如下:基本导航顺序: root -> First -> Second -> Third.其中,FirstViewController作为 navigation堆栈的rootv ...
- iOS学习26之UINavigationController
1. UINavigationController 1> 概述 UINavigationController : 导航控制器, 是 iOS 中最常用的多视图控制器之一, 用它来管理多个视图控制器 ...
- iOS:UI系列之UINavigationController
又到了总结的时间了,突然间感觉时间过得好快啊, 总觉的时间不够用,但是这也没办法啊, 只有自己挤时间了,虽然是零基础,但是这并不能代表什么啦,只要努力,收获总还是有的, 同时我也相信广大的博友肯定也有 ...
- iOS基本控制-UINavigationController 传统的价值观,代理传统价值观,正向传统价值观,反传统的价值观
/* 程序过程: 1.创建一个根视图,一个二级视图 2,根视图NavigationItem.title = Root 二级视图NavigationItem.title = Secon ...
- 【iOS开发-21】UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最以下,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
- iOS 7中使用UINavigationController进行pop崩溃
最近在一个项目中遇到一种情况,push到一个界面,如果那个界面未请求到数据,则直接pop回去,然而使用 [self.navigationController popViewControllerAnim ...
- iOS 获取 UITabViewController 和 UINavigationController 的图标位置
这些图标是放在 UITabBar 和 UINavigationBar 里的.所以只要遍历它们的 subViews,找到类型是 UIButton 的就可以了. 所有想获取它们的相对位置很容易. 获取到相 ...
- UI第六节——UINavigationController 详解
1. UINavigationController 是一个容器类.里面盛放的是UIViewController. 容器的意思是,如果你不放入UIViewController,里面就是空的,什么也没有. ...
- 多线程技术在iOS开发中的使用
进程和线程 要使用多线程,首先需要理解进程和线程这2个概念.这里我简单的说一下. 所谓进程对应的是一个应用程序,负责开辟内存空间供应用程序使用,但是进程不能执行任务(指令).一个进程至少包含一条线程, ...
随机推荐
- 不只是技术!成为IT经理必备的十大软技能
摘要:可能你是一名普通的IT从业员,一个小小的程序员,可随着社会的发展和科技的进步,对人才的要求越来越高,你可能通过技术获得了职位,但你若想升职加薪却少不了软技能:谈判技巧.积极倾听.演讲技巧以及领导 ...
- Innodb物理存储结构系列1
本篇先介绍 下Innodb表空间,文件相关的内存数据结构. 1. 数据结构 Innodb的tablespace和文件的关系,是一对多的关系,先来看三个结构体 1. fil_system_struct: ...
- 反编译.net dll
自己公司的程序,年代久了,没有源代码,修改一些小地方,只能反编译,还好当时没有混淆. 先ildasm 反编译. 删除 .publickey = ( ) 这段,去原来签名. 然后再用找要改的IL,这 ...
- input之placeholder与行高的问题。
我们实现一个输入框的视觉的时候为了保持其各种各样的兼容性: 1.鼠标要跟文字一样高度. 2.文字要居中对齐. 3.还要有placeholder 第一个目标,当实现一个高度为40像素的高度输入框时,为了 ...
- vijos1049送给圣诞夜的礼品
这题犯了两个sb错误,写下来,为以后做个警告 一.mul过程中将k作为了循环变量 二.看错了题…… 题目中说是数到k行,而我却以为数k遍…… 做矩阵乘法,只要记住一句话:置换一定可以写成矩阵的形式! ...
- x86、i386、i486、i586、i686和x86_64
1.386与686 i386—几乎所有的X86平台,不论是旧的pentum或者是新的pentum-IV与K7系统CPU,都可以正常工作,i指得是Intel兼容的CPU,至于386就是CPU的等级.i5 ...
- C#日期时间格式化
日期转化一为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格式,要用到DateTime.ToString的方法(String, I ...
- 关于触发器、存储过程和DBlink的综合运用 (转)
关于触发器.存储过程和DBlink的综合运用 需求描述: 需要在两个不同oracl数据库实例中进行数据逻辑处理.如果A实例中的表有新数据插入或者数据更新,那么在B实例中执行与之相关的存储过程. 先假设 ...
- delphi获得当前鼠标坐标
简单的说就是取鼠标所在位置对应的窗口句柄? procedure TForm1.Timer1Timer(Sender: TObject);vara:TPoint; //用来存放坐标hw:HWND; // ...
- TcxVerticalGrid 汇总
赋值 AOrder.LoadSimpleFromFile(sDefineFile); grdRowFileDefine_PostalCode.Properties.Value := AOrder.Or ...