pushViewController:animated:的问题
1.在AppDelegate.m中:

2.在SecondViewController.h中:

3.在FirstViewController.m中:

4.在SecondViewController.m中:

5.最后,运行程序,发现问题:SecondViewController对象被FirstViewController对象的navigationController push后,
SecondViewController对象先按顺序依次调用执行其-test方法、-setWords:方法、test2方法、test3方法,
最后,SecondViewController对象的-viewDidLoad方法才被调用执行,
这致使-setWords:方法中的_label.text = _words;成为[nil对象 setText:_words],这就相当于没有执行,自然不能达到效果,
这是因为在SecondViewController对象中的-viewDidLoad方法中才开始创建该UILabel对象,所以,在此之前,_label始终为空对象(即nil对象)

6.问题总结:
B *b = [[B alloc] init];
[a.navigationController pushViewController:b animated:YES];
[b methodInB];
iOS7之前,这样写是没问题的, 调用流程:
依次是B中的-loadView -> -viewDidLoad -> -viewwillAppear -> -viewDidAppear -> 最后是-methodInB
从iOS7之后,调用流程变了:
[a.navigationController pushViewController:b animated:YES];之后,
B中最先被调用执行的是-methodInB -> -loadView -> -viewDidLoad -> -viewwillAppear -> -viewDidAppear
7.问题解决:
既然push之后的栈顶子控制器的-viewDidLoad方法被最后调用执行,那就去掉-setWords:方法中的_label.text = _words;
转而在-viewDidLoad方法中写上_label.text = _words;就可以成功赋值了!
pushViewController:animated:的问题的更多相关文章
- 关于使用 pushViewController: animated: 方法在下一个控制器中拿不到值的解决方法
如下代码: // 加载一个tabbar控制器 houseMessageTabbarController *houseTabbar = [[houseMessageTabbarController al ...
- 实现pushViewController:animated:的不同页面转换特效
1. 首先要明确的是,不使用pushViewController的默认动画,所以在调用这个函数时,要将animated设置为NO.2. 使用普通的来CATransition实现转换效果,代码如下:CA ...
- 解决UINavigationController在pushViewController时出现的"卡顿"问题
进行开发中,遇到了个小问题: 在使用UINavigationController的-pushViewController:animated:执行入栈一个子控制器操作时(即最新栈顶子控制器),会出现推出 ...
- iOS pushViewController 和 presentViewController的区别 详解
pushViewController 导航控制器入栈的方式切换页面presentViewController 模态切换的方式切换页面 1:用 UINavigationController 的时候用 p ...
- UINavigationController
知识点: 1)UINavigationController 2)UINavigationBar 3)UINavigationItem 4)UIToolBar ===================== ...
- 你真的了解UINavigationController吗?
一:首先查看一下关于UINavigationController的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UINavigationController : ...
- iOS界面开发
[转载] iOS界面开发 发布于:2014-07-29 11:49阅读数:13399 iOS 8 和 OS X 10.10 中一个被强调了多次的主题就是大一统,Apple 希望通过 Hand-off ...
- [BS-10] 统一设置app所有页面的“返回”按钮样式
统一设置app所有页面的“返回”按钮样式 如果想统一设置app所有页面的“返回”按钮样式,首先自定义WZNavigationController类继承UINavigationController类,然 ...
- iOS开发 爱特开发技术bug总结
#pragma mark 每天总结学习两小时 效率 和 每天学习 研究底层 多进去看看 // .................................................... ...
随机推荐
- 硬盘基础知识&&分区
学习记录的笔记,虽然毫无章法 硬盘基础知识 磁盘的物理组成 如下图所示: 有关磁盘物理知识的详细介绍请看硬盘的存储原理和内部架构这篇博文 硬盘接口类型 IDE SATA SCSI SAS 光纤通道 I ...
- Python基础 之 数据类型
数据类型 一.运算符 算数运算a = 10 * 10赋值运算a = a + 1 a+=1 布尔值:True 真 False 假 if True: pass while True: pass v = n ...
- python3对接聊天机器人API
详情见http://api.qingyunke.com/智能机器人API接口说明支持功能:天气.翻译.藏头诗.笑话.歌词.计算.域名信息/备案/收录查询.IP查询.手机号码归属.人工智能聊天接口地址: ...
- ArrayList与LinkedList的普通for循环遍历
对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: public static void main(String[] ...
- Linux 添加虚拟网卡
使用的Linux版本是Centos 7: [root@vnode33 bin]# cat /etc/redhat-release CentOS Linux release (Core) 使用ifcon ...
- c语言乐曲演奏——《千本樱》
这个程序着实花费了我好长的时间,我本身对音乐一窍不通,先是跟着girl friend学习了简谱,根据c调44拍的<千本樱>写下了下面的程序. #include<stdio.h> ...
- PCA算法理解及代码实现
github:PCA代码实现.PCA应用 本文算法均使用python3实现 1. 数据降维 在实际生产生活中,我们所获得的数据集在特征上往往具有很高的维度,对高维度的数据进行处理时消耗的时间很大, ...
- 判断两个字符串是否相等【JAVA】
if(A.equals(B)){ } 之前总是用"=="来判断,但是在JAVA里面好像不行.所以,用equals(). 查了下资料. 原因:equal()比较的是对象的内容,&qu ...
- C# .net 调用QQ邮箱
public static void QQfs() { try { MailMessage mm = new MailMessage(); MailAddress Fromma = new MailA ...
- .net 内置对象之Session对象和Session的过期时间
QQ:827969653 有需要的朋友可以下载Session类:SessionHelper类 http://technet.microsoft.com/zh-cn/library/system.web ...