UIViewController生命周期及应用界面切换
来源:互联网 发布:无网络怎么安装手写板 编辑:程序博客网 时间:2024/06/05 14:45
一、UIViewController生命周期
iOS应用程序有本生的生命周期外,界面中UIViewController也有生命周期,其生命周期如下图所示:
上图中,给出了一个视图控制器的视图可能发生的状态转换,图中并非所有的will回调方法都有成对的did回调方法,你需要去确保开始一个will回调方法处理。是否以同样的did回调结束这个过程,还是以相反的will回调方法去结束。
二、iOS应用界面切换
iOS中有两对界面切换方法分别是:push&pop以及present&dismiss
1、push&pop
AnotherViewController *pushView = [[AnotherViewController alloc]init];[self.navigationController pushViewController:pushView animated:YES];[self.navigationController popViewControllerAnimated:YES];
如图:上面三条语句以push的方式进行界面切换,首先要保证视图的容器在一个UINavigationController中,这样位于UINavigationController中的视图能够以push入栈和pop出栈的方式进行界面的切换。与此同时界面返回的代码是:
[self.navigationController popViewControllerAnimated:YES]
这个方法直接pop出位于栈顶的UIViewController,在调用此方法时候,需要注意的是先对self.navigationController进行判断是否不为空。才能进行pop操作,另外还有两种UIViewController出栈的方式:
[self.navigationController popToRootViewControllerAnimated:YES];[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)]
前一个方法可以直接pop到根ViewController,第二个方法可以跳到指定的ViewController中。
2、present&dismiss方法
iOS5后的界面切换方法是:
AnotherViewController *pushView = [[AnotherViewController alloc]init]; [self presentViewController:pushView animated:YES completion:nil];
这种方法切换的话整个界面都会被新界面给替换,界面返回的方法为:
[self dismissViewControllerAnimated:YES completion:nil];
需要提醒的是iOS5之前界面切换的方法有所不同:
[self presentModalViewController:(nonnull UIViewController *) animated:(BOOL)] [self dismissModalViewControllerAnimated:(BOOL)]
3、总结
需要注意的是以上方法必须成对出现,当采用pop方式要用push返回,不能用dismiss方法,同样的当采用present方式要用dismiss方法返回,不能用pop方法。同时如果要支持iOS5之前的设备用present方法时,需要采用presentModal方式进行切换。
- UIViewController生命周期及应用界面切换
- UIViewController的生命周期及界面切换
- UIViewController切换及简单动画
- UIViewController 切换及简单动画
- UIViewController的生命周期及iOS…
- IOS的生命周期及应用的前后台切换
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UIViewController生命周期
- UiViewController生命周期
- 绘制Android的机器人
- Android之值得开发者(安卓)必备的十八大开发资源
- 延长tableviewcell分割线到最左侧
- org.aspectj.lang.JoinPoint解析
- HTTP协议详解
- UIViewController生命周期及应用界面切换
- js高级
- 为什么servlet从请求得到的cookies是一个数组而不是一个cookie
- Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
- .NET创建Windows服务详细步骤(C#)
- 编译Opencv3.0.0+contribe modules
- 最大子序列和算法
- 在CentOS 6.3 64bit上利用iptables开放指定端口的方法
- 可以输出类名、函数名以及所在行号的Log帮助类