viewWillAppear和viewDidAppear什么时候被调用
来源:互联网 发布:辛丰年音乐笔记 淘宝 编辑:程序博客网 时间:2024/05/22 14:21
viewWillAppear和viewDidAppear什么时候被调用
问:
当我向一个UINavigationController压入一个视图控制器的时候,
1. 什么时候会触发viewWillAppear和viewDidAppear?
2. 什么导致了触发viewWillAppear和viewDidAppear失败?
答:
当你调用pushViewController:animated把一个视图控制器压入UINavigationController的时候,UINavigationController会自动调用这些方法。相似的,当你tabs时,UITabBarController会直接调用这些方法,当你使用presentModalViewController时也会调用方法。当一个视图控制器的视图被添加到一个window中时也会调用这些方法。我在这些情况下没有遇到过这些方法调用失败的情况。
记住,这些方法只在这些特定的情况下控制器pushed或presented的时候被调用。在其它的情况下不会被调用,比如你添加你的视图控制器的视图作为一个视图的子视图而不是作为window的子视图。苹果官方文档说视图控制器仅用于全屏显示的视图,典型的是使用上面提到的方法。可以忽略苹果的建议使一个视图控制器关联另一个视图控制的的视图作为子视图,但是你需要在作为容器的视图控制器中手动的调用嵌套控制器的viewWillAppear和viewDidAppear。
在 iOS 5.0 以前,视图控制器容器只属于苹果系统所有,苹果不建议你自定义视图控制器容器。实际上,在视图控制器编程指南这一章中明确告知我们不要使用它。以前苹果公司对于视图控制器容器的总体描述是“一个管理整个屏幕内容的视图控制器”,而现在的描述是“一个包含本身视图内容的单元集合”。为什么苹果不希望我们自定义像tab bar controllers 和navigation controllers这样的视图控制器容器呢?更准确的说,下面这条语句会带来什么问题:
[viewControllerA.view addsubView:viewControllerB.view]
view-insertion@2x
UIWindow作为应用程序的根视图,负责监听和分发屏幕旋转和视图布局等消息。在上图中,ViewController的view插入到根视图控制器当中的一个视图中作为其子视图,那么这个view就不会再接收到UIWindow传来的消息,像viewWillAppear:这种方法就不会被调用。
在ios5.0以前我们自定义的视图控制器容器,将会持有子类视图控制器的一个引用,并且需要我们手动的传递在父类视图控制器中调用的事件消息给子类视图控制器,准确地完成这项工作太难了!
问:
当我向一个UINavigationController压入一个视图控制器的时候,
1. 什么时候会触发viewWillAppear和viewDidAppear?
2. 什么导致了触发viewWillAppear和viewDidAppear失败?
答:
当你调用pushViewController:animated把一个视图控制器压入UINavigationController的时候,UINavigationController会自动调用这些方法。相似的,当你tabs时,UITabBarController会直接调用这些方法,当你使用presentModalViewController时也会调用方法。当一个视图控制器的视图被添加到一个window中时也会调用这些方法。我在这些情况下没有遇到过这些方法调用失败的情况。
记住,这些方法只在这些特定的情况下控制器pushed或presented的时候被调用。在其它的情况下不会被调用,比如你添加你的视图控制器的视图作为一个视图的子视图而不是作为window的子视图。苹果官方文档说视图控制器仅用于全屏显示的视图,典型的是使用上面提到的方法。可以忽略苹果的建议使一个视图控制器关联另一个视图控制的的视图作为子视图,但是你需要在作为容器的视图控制器中手动的调用嵌套控制器的viewWillAppear和viewDidAppear。
在 iOS 5.0 以前,视图控制器容器只属于苹果系统所有,苹果不建议你自定义视图控制器容器。实际上,在视图控制器编程指南这一章中明确告知我们不要使用它。以前苹果公司对于视图控制器容器的总体描述是“一个管理整个屏幕内容的视图控制器”,而现在的描述是“一个包含本身视图内容的单元集合”。为什么苹果不希望我们自定义像tab bar controllers 和navigation controllers这样的视图控制器容器呢?更准确的说,下面这条语句会带来什么问题:
[viewControllerA.view addsubView:viewControllerB.view]
view-insertion@2x
UIWindow作为应用程序的根视图,负责监听和分发屏幕旋转和视图布局等消息。在上图中,ViewController的view插入到根视图控制器当中的一个视图中作为其子视图,那么这个view就不会再接收到UIWindow传来的消息,像viewWillAppear:这种方法就不会被调用。
在ios5.0以前我们自定义的视图控制器容器,将会持有子类视图控制器的一个引用,并且需要我们手动的传递在父类视图控制器中调用的事件消息给子类视图控制器,准确地完成这项工作太难了!
0 0
- iOS: viewWillAppear和viewDidAppear什么时候被调用
- viewWillAppear和viewDidAppear什么时候被调用
- ios的视图控制器的viewWillAppear和viewDidAppear什么时候被调用
- ios的视图控制器的viewWillAppear和viewDidAppear什么时候被调用
- -viewWillAppear:和 -viewDidAppear:区别
- navigationController中viewWillAppear,viewDidAppear,viewWillDisappear和viewDidDisappeart调用问题
- viewDidAppear什么时候调用?
- 关于IOS开发中addSubView上去的viewController的viewWillAppear 和viewDidAppear 等调用的总结
- 关于IOS开发中的viewController的viewWillAppear 和viewDidAppear 等调用的总结
- 为什么viewDidAppear不调用?什么时候调用
- iOS -- 为什么viewDidAppear不调用?什么时候调用
- 让viewDidAppear/viewWillAppear 在页面加载前始终调用
- 让viewDidAppear/viewWillAppear 在页面加载前始终调用
- viewDidLoad init viewDidAppear: viewWillAppear: 四者调用时间关系
- UINavigationController and viewWillAppear / viewDidAppear
- ViewDidLoad viewWillAppear ViewDidAppear
- UINavigationController and viewWillAppear / viewDidAppear
- viewWillAppear/viewDidAppear/viewWillDisappear/viewDidDisappear
- redis配置文件详解(个人收藏)
- 如何在业务设计中优雅地使用JAVA反射
- 去掉NSString中的HTML标签
- 如何获取对象的属性和方法
- Java 基本常识+概述+环境变量配置+Hello World小程序
- viewWillAppear和viewDidAppear什么时候被调用
- The environment of C++ Programing in Linux
- IOS网络编程:HTTP
- MFC的消息映射机制
- POJ 2411 Mondriaan's Dream (状压DP)
- STL - string(典型操作demo)
- 千万级的Mysql数据库与优化方法
- 解决 linux 安装 ubuntu-12.10-desktop-i386.iso
- 二叉查找树(插入、查找、遍历、删除.........)